我已经有10年没有开发Java了,需要快速编译一个用Java8特性编写的plugin project。我下载了latest JDK (AdoptOpenJDK 16)并将其安装在我的MacOS开发机器上。
查看项目的POM文件,我看到了以下两个设置:
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>read that these settings会告诉编译器代码是用Java8特性编写的,编译后的类需要与1.8JVM兼容。
我关注了the developer instructions,但遇到了错误:
在初始构建时,以下错误将停止构建:
[ERROR] import: Entry[import from realm ClassRealm[project>org.github.flytreeleft:nexus3-keycloak-plugin:0.5.0-SNAPSHOT, parent: ClassRealm[maven.api, parent: null]]]
[ERROR]
[ERROR] -----------------------------------------------------
[ERROR] : begin 0, end 3, length 2
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.在其他项目上使用Similar people encountered the same issue。最终,我使用了一个解决方法,即was suggested to skip the maven Enforcer来克服这个错误。
在重新构建时,项目将失败,并在各种文件中出现大约90个编译错误。这些消息将显示类似以下内容:
String cannot be resolved to a type让我找到了this SO questions that had a similar error ..。但是没有好的答案。
如何构建此项目?
发布于 2021-04-05 09:44:37
解决方案是安装Java 8 JDK(LTS)并使用它进行构建。
首先,我从我的mac using these instructions中删除了最新的JDK,但在我的例子中,我必须使用适当的目录:
sudo rm -rf /Library/Java/JavaVirtualMachines/openjdk-16.jdk第二,转到:
并下载并安装OpenJDK 8 (LTS)。这将安装正确的版本并将JAVA_HOME路径指向正确的位置。
安装完成后,我运行了构建并编译了插件,没有错误。
或者,您可以保留已安装的两个版本,并使用以下命令将JAVA_HOME指向Java8LTS版本:
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_282`当我运行以下命令时,找到了版本字符串:
/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
16 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 16"
/Library/Java/JavaVirtualMachines/adoptopenjdk-16.jdk/Contents/Home
1.8.0_282 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8"
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Homehttps://stackoverflow.com/questions/66947388
复制相似问题