gpt4 book ai didi

java - 读/写期间类文件的魔法值发生变化

转载 作者:行者123 更新时间:2023-11-29 08:50:32 27 4
gpt4 key购买 nike

我正在尝试将 Java 类保存到数据库中。为此,我按如下方式读取文件:

bytes = com.google.common.io.ByteStreamsByteStreams.toByteArray(url.openStream());

然后,这些字节以 base64 编码:

org.apache.hadoop.hbase.util.Base64.encodeBytes(bytes);

再次加载它们时,反之亦然:

org.apache.hadoop.hbase.util.Base64.decode(base64);

并将其写入文件:

com.google.common.io.Files.write(binary, file);

但是,源文件和目标文件并不相同。使用二进制文件查看器显示它们确实非常相似;我只发现了一件事:新文件以

开头
EF BF BD EF BF BD EF BF BD EF BF BD

而不是预期的

CA FE BA BE

在那之后,它们至少有几个百字节是相同的。

作为合乎逻辑的结果,我在尝试从新文件加载类时收到以下错误消息:

java.lang.ClassFormatError: Incompatible magic value 4022320623 in class file ch/unibe/scg/doodle/producerTest/GiantTurtle

我不知道它在哪里出错,而且很难调试。我的文件读/写单元测试是绿色的。问题出在哪里?

最佳答案

我刚刚发现我已经解决了代码中的问题,但还没有更新二进制文件:它是一个eclipse插件项目,依赖于另一个项目进行开发,但另一个项目总是需要构建到jar和复制到插件的目录以便在运行时工作。

问题是我首先使用了基于字符串的 FileWriter:

FileWriter fstream = new FileWriter(file, append);
BufferedWriter out = new BufferedWriter(fstream);
out.write(content);
out.close();

重新打包我的项目并实际使用上面的代码解决了这个问题。

关于java - 读/写期间类文件的魔法值发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940300/

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