2017-09-22 10 views
2

に失敗しJAXB2-のmaven-pluginののschemagenの目標は、Java 9 に失敗したエラーは次のとおりです。JAXB2-のmaven-pluginのjavaの9

[Exception]: java.lang.ClassNotFoundException 
[Message]: com.sun.istack.SAXParseException2 
  • JAXB2プラグインのバージョンは2.3.1です
  • mavenのバージョンは3.5.0です。
  • mavenコンパイラプラグインのバージョンは3.7.0です。
  • すべてのプラグイン/依存関係は最新です。

私はmodule-info.javaファイルを持っていません。私が構築するプロジェクトは、JDKが1.8u144からバージョン9にアップグレードされた従来のJava 8プロジェクトです。

この時点で失敗する唯一のプラグインは、jaxb2-maven-pluginです。コンパイル時と実行時の両方で、他のすべてがOKです。スタックトレースは次のとおりです。私はプラグインに次の依存関係を追加することで問題を解決でき

org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) 
org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) 
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) 
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) 
com.sun.tools.jxc.ap.SchemaGenerator.process(SchemaGenerator.java:103) 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:968) 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:884) 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.access$2200(JavacProcessingEnvironment.java:108) 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1206) 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1315) 
jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1246) 
jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:922) 
jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:100) 
jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:142) 
jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:96) 
jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:90) 
com.sun.tools.jxc.SchemaGenerator$Runner.compile(SchemaGenerator.java:261) 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.base/java.lang.reflect.Method.invoke(Method.java:564) 
com.sun.tools.jxc.SchemaGenerator.run(SchemaGenerator.java:166) 
org.codehaus.mojo.jaxb2.schemageneration.AbstractXsdGeneratorMojo.performExecution(AbstractXsdGeneratorMojo.java:372) 
org.codehaus.mojo.jaxb2.AbstractJaxbMojo.execute(AbstractJaxbMojo.java:257) 
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154) 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146) 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309) 
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194) 
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107) 
org.apache.maven.cli.MavenCli.execute(MavenCli.java:993) 
org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345) 
org.apache.maven.cli.MavenCli.main(MavenCli.java:191) 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.base/java.lang.reflect.Method.invoke(Method.java:564) 
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
+0

[Java9でJava-eeの機能への依存を表現する方法](https://stackoverflow.com/questions/46084751/how-to-express-dependency-in-maven-on-java- ee-features-for-java-9への遷移) – nullpointer

+0

--add-modules javax.xml.bindを追加すると早く失敗します:module not found:javax.xml.bind。 jaxb2-maven-pluginの追加の依存関係なしで--add-modules java.se.eeを追加すると(提案された解決策のように)問題は解決されません。 –

+0

モジュールの 'module-info.java'と' pom.xml'も共有できますか? – nullpointer

答えて

1

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jaxb</groupId> 
     <artifactId>jaxb-jxc-jdk9</artifactId> 
     <version>2.3.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.activation</groupId> 
     <artifactId>javax.activation-api</artifactId> 
     <version>1.2.0</version> 
    </dependency> 
</dependencies> 

をXJCの目標のために、私は次の依存関係を追加するために必要なのと仮定しますプラグイン:

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jaxb</groupId> 
     <artifactId>jaxb-xjc-jdk9</artifactId> 
     <version>2.3.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.activation</groupId> 
     <artifactId>javax.activation-api</artifactId> 
     <version>1.2.0</version> 
    </dependency> 
</dependencies> 

もちろん、これは新しいバージョンのプラグインがリリースされるまでは回避策です。

+0

この回答は、Java 9のプラグインの不具合を修正したものですが、別の問題が公開されています。生成されたXMLスキーマには、XMLスキーマ要素(schema、element、complexType、simpleTypeなど)に接頭辞が指定されていないため、生成されたXMLスキーマ要素の解析に問題が発生します。この問題はJava 8でjaxb2-maven-pluginを使用しても発生しません。Java 9はXMLスキーマのマーシャリングに関して変更されましたか? –

関連する問題