【问题标题】:java.lang.ClassFormatError: Incompatible magic value 791617546java.lang.ClassFormatError:不兼容的魔法值 791617546
【发布时间】:2020-07-09 12:04:29
【问题描述】:

我正在玩我的世界,而我正在玩的客户端有一个错误,它在退出后让我的世界崩溃了,所以我想修复它。我反编译客户端并在 NetBeans 中编辑 .java 文件(我编辑得很少),然后将文件保存为 .class 文件。我将该文件放回原始 .jar 文件中,当我尝试启动游戏时显示“java.lang.ClassFormatError:不兼容的魔法值 791617546”。我查找了这个问题,其他人似乎正在通过清除他们的临时文件缓存来解决它,但这似乎对我不起作用。我对java的内部工作非常不熟悉,所以我不太明白这意味着什么。如果有人能告诉我我做错了什么,告诉我如何解决这个问题,或者告诉我另一种方法可以编辑代码,或者只是解释为什么会发生这种事情,这会让我很开心。

【问题讨论】:

  • 您是在尝试编辑原版 Minecraft 客户端,还是某些第三方模组/插件/等?如果是后者,你能提供一个链接吗?

标签: java decompiling recompile classformaterror


【解决方案1】:

十进制的 791617546 是十六进制的 0x2F2F200A,即// 后跟空格和 ASCII 换行符。鉴于此,看起来您将 Java 源代码直接保存为 .class 文件并尝试将其放入 jar 中。那是行不通的。您需要将源代码保存为 .java 文件,然后将其编译为 .class 文件,并将编译后的结果放入 jar 中。

【讨论】:

  • 你能推荐一个好的方法吗?我尝试使用 javac 但它只返回错误:找不到符号
  • @epicgaymer42069 听起来您只是反编译了您想要更改的文件。将它们全部反编译,然后重新编译时,就会有当前缺失的符号。
  • 或者,将现有的 jar 添加到类路径中。 (通常更容易,因为您可能需要修复反编译的代码)。
  • 嗯,我把它们都反编译了,但我不知道如何编译它们。
猜你喜欢
  • 2012-05-06
  • 2012-08-24
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2011-09-13
相关资源
最近更新 更多