【发布时间】:2018-08-07 16:29:08
【问题描述】:
我有以下项目结构(在 Windows 10 x64 上):
root-folder: containing parent pom, defining 1.8 for build and group/version, listing sub1, sub2, sub3 as modules
sub1: first module (jar), refering to parent pom
sub2: second module (jar), refering to parent pom, sub1 as dependency
sub3: third module (jar), refering to parent pom, sub2 as dependency
现在,当我按照上面声明的顺序在每个模块中分别执行mvn clean install 时,一切正常。
但是,当我在父 pom 上执行 mvn clean install 时,sub1 和 sub2 构建良好,而在 sub3 中,我得到了不祥的构建错误
An exception has occurred in the compiler (1.8.0_181). Please file a bug against the Java compiler via the Java bug reporting page [..]
java.lang.IllegalAccessError: tried to access class com.sun.tools.javac.tree.JCTree$1 from class com.sun.tools.javac.tree.JCTree$JCLiteral
at com.sun.tools.javac.tree.JCTree$JCLiteral.getValue(JCTree.java:2044)
at com.sun.tools.javac.parser.JavacParser.merge(JavacParser.java:1034)
[..]
我更新到最新的 JDK 8 和 Maven,但仍然是同样的错误。我确认 JAVA_HOME 和 PATH 设置正确(因为系统上确实有更新的 JDK)。我还通过 MAVEN_OPTS 增加了 Maven 的内存,但也没有变化。
有没有人有过类似的行为并且可以向我展示一个解决方案或至少提出一个想法是什么可能导致这种情况?手动编译每一个或让maven编译有什么不同?依赖关系可能是一个问题,还是我自己的代码中更有可能出现问题?
【问题讨论】:
-
你能用早期的 JDK 编译它吗? 1.8.0_151?
-
不,我在尝试更新 JDK 之前就拥有那个版本,错误是一样的。
-
看起来像一个错误,你能发布导致它的代码吗?您可以尝试使用 Java 9 进行构建,javac JDK-8028415 : TreeMaker.Literal(Object) creates invalid JCLiterals when passed a Character 中可能存在类似的错误。
标签: java maven multi-module