我正在使用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
有什么建议吗?
答案 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可能会解决您的问题。