文件io获取“不兼容的魔术值”错误Java
Exception in thread "main" java.lang.ClassFormatError: Incompatible magic
value 813187905 in class file
我理解这个错误,因为它很清楚。我需要以某种方式获得java的神奇值,0xCAFEBABE
(十六进制)写入到。我首先以编程方式编写的java文件。我已经阅读了类似问题的所有答案,但它们都指向引入第三方库以编程方式编写java文件
我忍不住认为有一个相对直接的解决方案,而不引入第三方库?如何将十六进制值写入任意文件
现在,我拿着一根绳子。将其转换为字节,然后将这些字节写入FileInputStream
,然后将其转储到具有的文件中。java扩展。下面是我正在使用的代码。我怎样才能不写字节而写十六进制值呢?编码不是我的强项,所以这个问题确实给我带来了一些麻烦
我用来编写java文件的代码:
public void writeJavaFile() throws IOException
{
String testString = "class test { public test() {} public void printTest()
{ System.out.println(\"yoooo\");}}";
String filename = "test.java";
OutputStream outputStream = new FileOutputStream(filename);
outputStream.write(testString.getBytes());
outputStream.flush();
outputStream.close();
}
# 1 楼答案
我对这个问题的想法完全错误,因此可能发布了一个不一致的问题。我假设我需要将自己的java文件编译成类文件,而类文件实际上就是编写神奇值的地方
显然,我可以用编程的方式编写java编译器。下面是我用来让它工作的代码:
# 2 楼答案
更有可能是您下载的文件已损坏。类文件。您可能想知道是否可以在某处找到正确的文件。如果这是不可能的,您可以重新编译源代码,如果您有它
即使您成功地将魔法值正确写入文件,文件本身也可能包含(无法命名)胡言乱语