javac --add-modules java.xml.bind for annotation processor?
Claes Redestad
claes.redestad at oracle.com
Sun Nov 20 22:23:26 UTC 2016
Hi Eirik,
compiling com.example.processor.ProcessorUsingJavaXmlBind standalone
seems to work fine with --add-modules java.xml.bind - instead it
appears as if maven-compiler-plugin doesn't preserve argument order, so
you need to use the joined argument form in your pom.xml:
<arg>--add-modules=java.xml.bind</arg>
I tried this on your minified example, and seems to work. Thanks!
/Claes
On 2016-11-20 22:57, Eirik Bjørsnøs wrote:
> Hi there!
>
> I'm giving Java 9 and Jigsaw a spin on a moderately complex project.
> (Interestingly, the project is itself a module system, so we do stuff like
> annotation processing and dynamic reloading of class loader graphs and
> services)
>
> I'm experienced enough with advanced Java to have shot myself in the foot
> with a java.lang.ClassNotFoundException: java.lang.ClassNotFoundException
> :-) However, I've only recently been looking into Jigsaw in concrete terms.
> So please be kind when I expose my ignorance :-)
>
> Initially, I just want to see if I can get the project to compile on Java 9.
>
> So I'm using --add-modules to javac here and there to add modules not
> available to the unnamed module by default. (Not making any proper modules
> yet, that will be the next step).
>
> This seems to be working fine, except for one of our annotation processors,
> which happens to use JAXBContext from java.xml.bind.
>
> I added --add-modules to javac (via Maven configuration), but my annotation
> processor still can't load JAXBContext and fails with this message:
>
> $ java -version
> java version "9-ea"
> Java(TM) SE Runtime Environment (build 9-ea+144)
> Java HotSpot(TM) 64-Bit Server VM (build 9-ea+144, mixed mode)
>
> $ mvn clean install -e
>
> This fails with:
>
> Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
> at
> com.example.processor.ProcessorUsingJavaXmlBind.process(ProcessorUsingJavaXmlBind.java:24)
> at
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:959)
> at
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:875)
> at
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.access$2100(JavacProcessingEnvironment.java:106)
> at
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1182)
> at
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1290)
> at
> jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1260)
> at
> jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:939)
> at
> jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl$1.call(JavacTaskImpl.java:106)
> at
> jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl$1.call(JavacTaskImpl.java:100)
> at
> jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:137)
> ... 28 more
>
> I've confirmed that this reproduces using only javac:
>
> $ cd example-module
>
> $ javac -d target/classes -classpath
> target/classes:$HOME/.m2/repository/com/example/annotation-processor/1.0-SNAPSHOT/annotation-processor-1.0-SNAPSHOT.jar:
> -sourcepath src/main/java/ -target 1.9 -source 1.9 --add-modules
> java.xml.bind src/main/java/com/example/module/SomeClass.java
>
> java.xml? true
> java.xml.bind? false
>
>
> An annotation processor threw an uncaught exception.
> Consult the following stack trace for details.
> java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
> at
> com.example.processor.ProcessorUsingJavaXmlBind.process(ProcessorUsingJavaXmlBind.java:24)
> at
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:959)
>
>
> I've reduced this to a minimal-ish test case, available on Github:
>
> https://github.com/eirbjo/java-xml-bind-processor
>
> Here's the annotation processor:
>
> https://github.com/eirbjo/java-xml-bind-processor/blob/master/annotation-processor/src/main/java/com/example/processor/ProcessorUsingJavaXmlBind.java
>
> The class under compilation and the annotation:
>
> https://github.com/eirbjo/java-xml-bind-processor/blob/master/example-module/src/main/java/com/example/module/SomeClass.java
> https://github.com/eirbjo/java-xml-bind-processor/blob/master/example-module/src/main/java/com/example/module/SomeAnnotation.java
>
>
> Any clues?
>
> Cheers,
> Eirik.
>
More information about the jigsaw-dev
mailing list