JDK 9.0.1を使用してMavenプロジェクトをコンパイルしようとしています私はこのスタックトレースにあまり説明することなく直面しています:
Exception in thread "main" Java.lang.AssertionError
at jdk.compiler/com.Sun.tools.javac.util.Assert.error(Assert.Java:155)
at jdk.compiler/com.Sun.tools.javac.util.Assert.check(Assert.Java:46)
at jdk.compiler/com.Sun.tools.javac.comp.Modules.enter(Modules.Java:250)
at jdk.compiler/com.Sun.tools.javac.main.JavaCompiler.readSourceFile(JavaCompiler.Java:821)
at jdk.compiler/com.Sun.tools.javac.processing.JavacProcessingEnvironment$ImplicitCompleter.complete(JavacProcessingEnvironment.Java:1510)
at jdk.compiler/com.Sun.tools.javac.code.Symbol.complete(Symbol.Java:633)
at jdk.compiler/com.Sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.Java:1314)
at jdk.compiler/com.Sun.tools.javac.code.Type$ClassType.complete(Type.Java:1139)
at jdk.compiler/com.Sun.tools.javac.code.Type$ClassType.getTypeArguments(Type.Java:1065)
at jdk.compiler/com.Sun.tools.javac.code.Printer.visitClassType(Printer.Java:237)
at jdk.compiler/com.Sun.tools.javac.code.Printer.visitClassType(Printer.Java:52)
at jdk.compiler/com.Sun.tools.javac.code.Type$ClassType.accept(Type.Java:992)
at jdk.compiler/com.Sun.tools.javac.code.Printer.visit(Printer.Java:136)
at jdk.compiler/com.Sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.Java:197)
at jdk.compiler/com.Sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.Java:165)
at jdk.compiler/com.Sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.Java:111)
at jdk.compiler/com.Sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.Java:67)
at jdk.compiler/com.Sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.Java:183)
at jdk.compiler/com.Sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.Java:165)
at jdk.compiler/com.Sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.Java:111)
at jdk.compiler/com.Sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.Java:67)
at jdk.compiler/com.Sun.tools.javac.util.JCDiagnostic.getMessage(JCDiagnostic.Java:771)
at jdk.compiler/com.Sun.tools.javac.api.ClientCodeWrapper$DiagnosticSourceUnwrapper.getMessage(ClientCodeWrapper.Java:799)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.Java:131)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.Java:174)
at org.Apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.Java:1075)
at org.Apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.Java:168)
at org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.Java:134)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:208)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:154)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:146)
at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:117)
at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:81)
at org.Apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.Java:51)
at org.Apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.Java:128)
at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:309)
at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:194)
at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:107)
at org.Apache.maven.cli.MavenCli.execute(MavenCli.Java:993)
at org.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:345)
at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:191)
at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
at Java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.base/Java.lang.reflect.Method.invoke(Method.Java:564)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:356)
何がこれを引き起こしているのか本当にわかりませんが、これはJDKのバグですか?
追加の詳細:
これを追加するだけです
<forceJavacCompilerUse>true</forceJavacCompilerUse>
pOMでmavenコンパイラビルドプラグインにアクセスすると、すべてのjavacエラーが表示されます! 詳細を含むソース
スタックトレースの一部
at jdk.compiler/com.Sun.tools.javac.main.JavaCompiler.readSourceFile(JavaCompiler.Java:821)
コードの行に関連する
throw new CompletionFailure(c, diags.fragment("cant.resolve.modules"));
これは、Java9に基づいていない、および/または(正しい)モジュール宣言がないmodule-info.Java
リリースバージョンが9に指定されている場合、宣言あり/なしでモジュールを解決できません。
[〜#〜] update [〜#〜]
ほとんどの場合、このエラーは、コンパイラがコンパイルエラーを報告しようとしているときに発生するようですが、プロセスで爆発します。これまでのところ、主に2つのアプローチがこれらの問題の解決に役立ちました。
-proc:none
コンパイラー引数を使用して、注釈処理を無効にします(注釈処理がコンパイラーを混乱させる可能性があるようです。オリジナルソリューション
多くの試行錯誤の後、この問題をローカルで回避/修正することができましたが、最終的に私のアプローチは次のとおりでした:
テストのスコープ依存関係がプロジェクトのコンパイルにどのように影響するかはまだ私にはわかりません...また、javax.servlet:servlet-api:3.0.1:providedは、障害のあるモジュールの依存関係の中に既にあることがわかりました。テストスコープの依存関係は実際には何にも使用されていません。
最終的に、誤って定義されたテストスコープのservlet-api依存関係をバグトリガーモジュールから削除しただけで、Mavenは以前に失敗したモジュールをコンパイルできました。
これはそもそも非常にあいまいな質問に対する非常にあいまいな答えであると確信していますが、私のアプローチが他の誰かに役立つことを願っています。