1

次のエラーを修正するために、.mvn/jvm.configMaven 3.8.1 と Maven Surefire プラグイン 3.0.0-M5 を OpenJDK 16 と共に使用します。--add-opens=java.base/java.lang=ALL-UNNAMED

java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throw java.lang. .ClassFormatError アクセス可能: モジュール java.base は、名前のないモジュール @319aa9ee に対して「java.lang を開きません」

Maven を機能させるために、なぜ-DforkCount=0Maven に渡す必要があるのですか? フォークされていない VM を強制せずに単独で.mvn/jvm.config実行すると、無視されるようです。mvn installよりクリーンなソリューションはありますか?

次のプロジェクトを使用して、私の問題を再現できます: https://jogamp.org/cgit/ardor3d.git/

PS: この問題は EasyMock 4.3 が原因です。これは、Java 16 をサポートすると主張する内部で Objenesis を使用しており、いくつかの微調整でサポートされています。sun.misc.Unsafe は言及されていますが、上記の方法ではありません。

PS 2: スタック トレースは、Java 17 をまだサポートしていないcglib に言及しています:

原因: org.easymock.cglib.core.CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->保護された最終的な java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[] を作成できません,int,int,java.security.ProtectionDomain) が java.lang.ClassFormatError をスローします。

参照: https://maven.apache.org/docs/3.8.1/release-notes.html#JVM_and_Command_Line_Options

4

0 に答える 0