Maven 3.5与JDK 9的问题

10

我正在使用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

有什么建议吗?


2
com.sun.tools的访问权限不再是公共的,请参考模块系统... - khmarbaise
这里 --permit-illegal-access 或者最近增加的版本 --illegal-access=warn 有帮助吗? - Naman
你可以使用 -X 选项运行 mvn 进行调试,查看 mvn 编译器插件所使用的模块版本是什么,这些模块包括:org.codehaus.plexus:plexus-compiler-apiorg.codehaus.plexus:plexus-compiler-managerorg.codehaus.plexus:plexus-compiler-javac:jar。版本应该是 2.8.1。 - Anton Krosnev
3
感谢您的回答。问题出现是因为Lombok库。将其升级到最新版本后,问题得以解决。 - Sergiy
1
尝试升级Lombok到最新版本- https://mvnrepository.com/artifact/org.projectlombok/lombok - prayagupa
4个回答

5

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

运行 mvn -v,这将显示 Maven 正在使用哪个 Java 版本。

对于我来说,Maven 正在使用 Java 15,但我的应用程序旨在在 Java 8 上运行。将 JAVA_HOME 设置为 JDK 8 的路径即可解决此问题。


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

4

2

版本为3.6.1的Maven编译插件不太适合使用。建议您使用至少3.6.2版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接