1

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);

ありがとう

4

1 に答える 1