簡単に言えば、私はこれを機能させました:
java -cp ".:bin:MyJar.jar" path.to.My.Main
しかし、これは動的にコンパイルされたクラスをロードしようとすると例外をスローしました:
java -jar MyJar.jar
障害はオンでした
x = clazz.newInstance();
「java.lang.NoClassDefFoundError:」が表示される場所。クラスはランタイム コンパイルされているため、カスタム クラス ローダーを使用してクラスをロードしました。例外が発生した理由は、Java が clazz 内でインポートをロードしようとしたときに別のクラスローダーを使用していたためです。これは ClassLoader extends URLClassLoader を変更して super.loadClass(className, false); を呼び出すことで修正されます。