gpt4 book ai didi

java - DefineClass方法抛出java.lang.ClassFormatError : Incompatible magic value 1885430635 in class file

转载 作者:太空宇宙 更新时间:2023-11-04 09:56:02 24 4
gpt4 key购买 nike

我尝试了以下代码,但出现异常。有人可以帮我解决这个问题吗

package defineClass;

import java.io.FileInputStream;
import java.io.IOException;

public class DefineClass extends ClassLoader {

static String PATH = "E:\\WorkSpaceOpkey\\tester\\src\\test2\\Bar.java";

public static void main(String[] m) throws IOException {
FileInputStream fis = new FileInputStream(PATH);
byte[] b = new byte[fis.available()];
fis.read(b);
new DefineClass().defineClass("test2.Bar", b, 0, b.length);
}

}

我在定义类时遇到以下错误

Exception in thread "main" java.lang.ClassFormatError: Incompatible magic 
value 1885430635 in class file test2/Bar
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
at defineClass.DefineClass.main(DefineClass.java:14)

最佳答案

根本不可能,因为类加载器加载编译类:

Converts an array of bytes into an instance of class Class,

您不能使用类加载器加载 java 源代码文件。

如果您想动态使用java源代码,您必须先将该源代码编译为字节码,请参阅here了解如何执行此操作的选项。

真正的答案当然是:不要只是假设类的作用。始终阅读相应的 java 文档,并进行更多研究。有许多很好的资源详细解释了类加载器,例如 here .

关于java - DefineClass方法抛出java.lang.ClassFormatError : Incompatible magic value 1885430635 in class file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54142600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com