ciscoo / cxf-codegen-gradle

Gradle plugin to generate Java artifacts from WSDL
Apache License 2.0
28 stars 6 forks source link

ClassNotFoundException: javax.xml.ws.Service #4

Closed MarkvV closed 3 years ago

MarkvV commented 3 years ago

Used the documented example:

plugins {
    id "io.mateo.cxf-codegen" version "1.0.0-rc.2"
}

...

cxfCodegen {
    wsdl2java {
        accounting {
            wsdl = file("src/main/resources/wsdl/Accounting.wsdl")
        }
    }
}

./gradlew --version

Gradle 6.7.1
------------------------------------------------------------

Build time:   2020-11-16 17:09:24 UTC
Revision:     2972ff02f3210d2ceed2f1ea880f026acfbab5c0

Kotlin:       1.3.72
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:          11.0.9.1 (AdoptOpenJDK 11.0.9.1+1)
OS:           Linux 5.8.0-7642-generic amd64

./gradlew tasks

---------------
wsdl2java - Runs all wsdl2java tasks
wsdl2javaAccounting - Generates Java sources for 'accounting'
...

./gradlew wsdl2java

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/ws/Service
        at org.apache.cxf.tools.wsdlto.frontend.jaxws.JAXWSContainer.isJaxws22(JAXWSContainer.java:64)
        at org.apache.cxf.tools.wsdlto.frontend.jaxws.JAXWSContainer.getServiceTarget(JAXWSContainer.java:61)
        at org.apache.cxf.tools.wsdlto.frontend.jaxws.JAXWSContainer.validate(JAXWSContainer.java:68)
        at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:164)
        at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:156)
        at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:402)
        at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:105)
        at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
        at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
        at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:185)
Caused by: java.lang.ClassNotFoundException: javax.xml.ws.Service
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 10 more

I have to add the following in order to make it work

dependencies {
    ...
    cxfCodegen "javax.xml.ws:jaxws-api:2.3.1"
    cxfCodegen "javax.jws:javax.jws-api:1.1"
}
ciscoo commented 3 years ago

I see from the output of ./gradlew --version that you are using Java 11.

This documented under Java 9+.


Side note:

Both javax.xml.ws:jaxws-api and jakarta.xml.ws:jakarta.xml.ws-api provide javax.xml.ws.Service: