似乎我应该能够使用包含URLClassLoader
的{{1}}派生的类加载器来执行此操作:
loadClass()
然后我从类文件中读取字节并调用上面的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;
}
奇怪的是,名称和“错误名称”是相同的。两者都是正确的包装。
如何使用正确的预期名称获取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
?
使用不赞成的表单,没有classname,效果很好:
defineClass
由于
答案 0 :(得分:0)
的Javadoc: 参数: name - 类的预期名称,如果未知,则为null,使用“。”而不是'/'作为分隔符,没有尾随的“.class”后缀。
尝试将“/”替换为“。”