Maven 3.5与JDK 9的问题

Ser*_*gey 6 maven java-9

我正在使用Maven 3.5.0和JDK 9 build 171.当我尝试编译我的项目时,我得到了一个例外:

[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 
Run Code Online (Sandbox Code Playgroud)

我向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
Run Code Online (Sandbox Code Playgroud)

有什么建议?

小智 5

验证 Maven 使用的 Java 版本是否正确。

运行mvn -v这将显示 maven 正在使用的 Java 版本。

对我来说,Maven 使用的是 Java 15,但我的应用程序打算在 Java 8 上运行。将 JAVA_HOME 设置为 jdk8 的路径可以解决这个问题。


abh*_*abh 4

我的项目依赖于 Lombok 库。将 pom.xml 更新到版本 1.16.18 允许构建完成,但出现警告:

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
Run Code Online (Sandbox Code Playgroud)