1

私は 10 年間 Java を開発しておらず、Java 8 の機能で書かれたプラグイン プロジェクトをすばやくコンパイルする必要がありました。最新の JDK (AdoptOpenJDK 16)をダウンロードし、MacOS 開発マシンにインストールしました。

プロジェクトの POM ファイルを見ると、次の 2 つの設定が見つかりました。

    <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 に答える