2016-11-26 77 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