Maven 3.5与JDK 9的问题

时间:2017-06-06 11:17:01

标签: 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 

我向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

有什么建议吗?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

版本3.6.1中的Maven编译器插件不适用。您应该使用至少3.6.2版本。

答案 3 :(得分:1)

将lombok版本升级到1.18.0可能会解决您的问题。

Check here. They fixed the issue in 1.18.0 version

相关问题