0

簡単に言えば、私はこれを機能させました:

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); を呼び出すことで修正されます。

4

1 に答える 1

1

問題の解決策:

カスタム クラスローダーを変更して、super.loadClass() を呼び出します。スタック トレースが明らかにクラスローダーを通過しない場合がありますが。

于 2012-10-03T00:45:41.310 に答える