使用defineClass从字节动态创建类

时间:2011-10-19 17:39:48

标签: java noclassdeffounderror urlclassloader

似乎我应该能够使用包含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

由于

1 个答案:

答案 0 :(得分:0)

的Javadoc: 参数: name - 类的预期名称,如果未知,则为null,使用“。”而不是'/'作为分隔符,没有尾随的“.class”后缀。

尝试将“/”替换为“。”