2016-11-26 60 views
-2

问题在.class文件

嘿编辑字符串。我一直在开发一款游戏,并且在游戏中,我展示了版本“1.0.13”,并且我很快意识到它完全不正确,并且应该显示“1.9”。我在Eclipse中编辑我的代码,并且我没有为每个版本的代码进行备份,所以我不能仅从Eclipse编辑字符串。我尝试使用.jar反编译器反编译游戏的.jar文件。我下载了源代码(.java文件)并将其放入Eclipse Neon中。在放入.java文件后,我意识到出现了一些错误。我修好了他们并运行了程序。许多游戏的机制都被彻底打破了。我意识到这是不会工作的,所以我解压缩.jar WinRAR,然后尝试使用Notepad ++手动编辑.class文件(这是一个愚蠢的想法)。在使用他们的内置工具后,我迅速用“1.9”替换了所有的“1.0.13”。保存代码并运行.jar文件后,出现一个窗口,标题为“Java虚拟机启动器”和文本“错误”:出现JNI错误,请检查您的安装并重试。“然后我遇到了一个程序命名为JBE(Java字节码编辑器)。当使用该程序时,我不确定如何编辑常量变量,并且我使用该程序搜索了教程,并且找不到任何东西。 “事先已经研究花了几个小时,我甚至不能找到解决办法。如果你知道如何解决这种情况,请评论。谢谢。

信息

由于我“需要至少10个声望才能发布更多的感谢2个链接”。我只会发布一个single PasteBin link,您可以阅读该链接,该链接将链接到我在本文中讨论过的所有网站和程序。

+0

为什么要说1.9?如果这是你的游戏,你应该可以在源代码中改变它。 – chrylis

+0

@chrylis _“我没有为每个版本的代码做备份,所以我不能只从Eclipse编辑字符串。”_ – Jerrybibo

+1

@Jerrybibo啊,我认为这将是最新版本。不一定是这样。 – chrylis

回答

1

不要反编译,也不要编辑字节码。

如果使用标准十六进制编辑器(http://www.hexedit.com/),则可以打开二进制类文件。看看那里,你可能在那里的旧版本号。您可以更改单个字节(不要忘记它是UTF-16编码的!)并保存二进制更改。

关键是课堂上没有别的东西在移动或改变位置。记事本将插入或删除字符,这将打破类文件。当你找到文字时,你必须用空格字符填充字符串(你不能改变字符串文字的长度)。也就是说,将它们存在的字符更改为新数字或空格字符,但不要添加或删除任何内容。

除了表示类文件中字符串的字节外,没有任何更改。

+0

感谢您的回答。运行.jar时,游戏会显示正确的版本,但我有代码将版本号居中,以便它显示在屏幕的中心。我检查了,字符串的值是“1.9 \ n”而不是“1.9”。你知道我能做到的任何方式,以便字符串的值是“1.9”而不是?提前致谢。 – Flames