1

我已经 10 年没有开发过 Java,需要快速编译一个使用 Java 8 特性编写的插件项目。我下载了最新的 JDK(AdoptOpenJDK 16)并将其安装在我的 MacOS 开发机器上。

查看项目的 POM 文件,我看到了以下两个设置:

    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

阅读这些设置会提示编译器代码是使用 Java 8 功能编写的,并且编译的类需要与 1.8 JVM 兼容。

我按照开发人员的说明操作但遇到错误:

在初始构建时,以下错误将停止构建:

[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.

类似的人在其他项目中遇到了同样的问题。最终,我使用了一种建议跳过 maven Enforcer以克服此错误的解决方法。

重建后,项目将失败,并在各种文件中出现大约 90 个编译错误。这些消息会说类似于:

String cannot be resolved to a type

这让我想到了这个有类似错误的 SO 问题……但没有好的答案。

我如何构建这个项目?

4

1 回答 1

0

解决方案是安装 Java 8 JDK(LTS) 并使用它进行构建。

首先,我使用这些说明从我的 mac 中删除了最新的 JDK ,但就我而言,我必须使用适当的目录:

sudo rm -rf /Library/Java/JavaVirtualMachines/openjdk-16.jdk

二、去:

https://adoptopenjdk.net/

并下载并安装 OpenJDK 8 (LTS)。这将安装正确的版本并将 JAVA_HOME 路径指向正确的位置。

安装后,我运行构建并编译插件没有错误。

或者,您可以同时安装并JAVA_HOME使用以下命令指向 Java 8 LTS 版本:

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/Home
于 2021-04-05T01:44:37.390 回答