2017-06-06 22 views
5

私は私のプロジェクトをコンパイルしようとすると9ビルドが、私は例外だ171のMaven 3.5.0およびJDKを使用しています:のMaven 3.5問題

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project admin: Fatal error compiling: ja-va.lang.NoClassDefFoundError: com/sun/tools/javac/file/BaseFileObject: com.sun.tools.javac.file.BaseFileObject 

私はMAVEN_OPTSにはなくせずに提案フラグを追加します成功:

--add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED 

お勧めはありますか?

+2

com.sun.toolsアクセスがパブリックではありませんもうモジュールシステムを参照してください... – khmarbaise

+0

'--permit-illegal-access'または最近追加された' --illegal-access = warn'がここで助けていますか? – nullpointer

+0

'-X'オプションを付けて' mvn'を実行して、デバッグ用にmvnコンパイラプラグインで使用されているモジュールのバージョンを確認できますか? 'org.codehaus.plexus:plexus-compiler-api'、 ' org .codehaus.plexus:plexus-compiler-manager'、 'org.codehaus.plexus:plexus-compiler-javac:jar'です。バージョンは2.8.1である必要があります。 –

答えて

4

私のプロジェクトはLombokライブラリに依存していました。バージョン1.16.18へのpom.xmlを更新すると、ビルドが警告で完了することができ:バージョン3.6.1で

WARNING: An illegal reflective access operation has occurred 
WARNING: Illegal reflective access by lombok.javac.apt.LombokProcessor to field com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs 
WARNING: Please consider reporting this to the maintainers of lombok.javac.apt.LombokProcessor 
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations 
WARNING: All illegal access operations will be denied in a future release 
1

のMavenコンパイラプラグインは適していません。 3.6.2以上のバージョンを使用する必要があります。