:URLClassLoader
を含む派生クラスローダーを使用してこれを実行できるはずです。loadClass()
public Class loadClass(String className, byte[] classBytes)
throws ClassNotFoundException, NoClassDefFoundError
{
Class result = null;
result = defineClass(className, classBytes, 0, classBytes.length);
classes.put(className, result);
return result;
}
次に、クラスファイルからバイトを読み取り、上記のloadClassメソッドを呼び出します。私はこれを手に入れます:
java.lang.NoClassDefFoundError: com/samples/SampleClass (wrong name: com/samples/SampleClass)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
奇妙なことに、名前と「間違った名前」は同じです。そして、どちらも正しいパッケージです。
NoClassDefFoundError
正しい予想される名前を取得するにはどうすればよいですか?そして、これを行うことは可能defineClass
ですか?
クラス名なしで非推奨のフォームを使用すると、完全に機能します。
result = defineClass(classBytes, 0, classBytes.length);
ありがとう