我有一個Java類,充滿了錯誤,甚至不會在我的電腦上編譯(我不知道這個人是如何編譯的),但它以某種方式工作。我不能用我慣用的工具重新編譯它,所以我正在尋找可以編譯但可能忽略錯誤的東西,或者我認爲很酷的東西可以在反編譯和顯示文件源的程序中打開它,允許我編輯它,然後自動重新編譯它。有點像JD-GUI,但你可以編輯這些文件。Easy Java .class文件編輯器?
0
A
回答
5
我不認爲這樣的工具存在Java。或者至少,不是以有效解決您的問題的形式。
更高效的方法是找出導致這些編譯錯誤的原因並加以解決。如果您收到一堆錯誤的文件應該編譯(例如,因爲它編譯爲別人),有機會,它是下列之一:
- 你構建類路徑是不正確的,編譯器無法找到外部依賴關係。
- 您缺少一些包含外部依賴關係的JAR文件。
- 你有一些JAR文件的版本錯誤。
- 您使用的是錯誤版本的Java SDK。
這些都很容易解決...一旦你知道問題是什麼。
如果您向我們提供了編譯錯誤的示例,我們可以確認這一點......或提供更好的診斷。
當前一代反編譯器都沒有在產生編譯源代碼非常好。此外,這種方法不會解決上面列出的任何問題。 (即使這樣做,你也會通過黑客攻擊反編譯後的源代碼來深入挖掘自己的洞)。
0
儘管Java字節碼比直接編譯爲可執行代碼的語言稍微易於反編譯,但Java反編譯器是非常無效的,特別是當涉及到更復雜的代碼時,如果原始源代碼使用泛型,則更是如此。生成的源代碼往往具有在所有原來的沒有關係,如果編譯在所有...
如果你有一些人類產生版本的源代碼的那個類我建議嘗試解決這個問題,而不是試圖逆向工程
.class
文件。如果你有一個
.class
文件,你可能仍然能夠擴展或覆蓋子類中的一些方法,從本質上修改它的行爲。使用像這樣的繼承並不總是可能的,但它通常有助於第三方黑盒代碼...你可能想看看Javassist。它是一個字節碼操作庫,除了其他功能外,它還允許您在現有方法中插入Java語句。它確實有相當多的限制,但在某些情況下它可能會非常有幫助...
相關問題
- 1. 以編程方式編輯/修改.java文件? (未.class文件)
- 2. Java類文件編輯器
- 3. Java - 編輯manifest.mf使JAR中包含.class和.java文件
- 4. 如何編輯Android庫.class文件
- 5. 從java打開文件編輯器
- 6. 好的Java屬性文件編輯器
- 7. Java文本編輯器Api
- 8. Java Eclipse文本編輯器
- 9. 如何在eclipse中編輯java .class?
- 10. 在java中使用vi編輯器編輯文件
- 11. Eclipse插件:java編輯器
- 12. Java不編譯$ CLASSPATH下的.class文件
- 13. Eclipse JUNO - 編輯.class
- 14. 編輯Java源文件
- 15. java jdom編輯xml文件
- 16. 用Java編輯PDF文件
- 17. Java編輯現有文件
- 18. 用Java編輯XML文件
- 19. 編輯.txt文件Java
- 20. 編輯Java類文件JAD
- 21. 編輯xml文件java
- 22. 爲什麼java編譯器爲單個java文件生成多個.class文件?
- 23. Easy Python ASync。預編譯器?
- 24. 將.xsl文件編譯爲.class文件
- 25. 如何創建/編輯.class文件代碼
- 26. 使用文本編輯器編輯服務器中的文件
- 27. 用於多個lang.properties文件的Java屬性文件編輯器?
- 28. 編譯或不編譯.class文件
- 29. 文件編輯器,問題
- 30. 在線文件編輯器
這沒有任何意義。如果編譯器給你錯誤消息,那麼該文件就不能被編譯。你得到什麼樣的錯誤信息? –
那裏有Java反編譯器,但是如果你可以直接訪問源代碼,你爲什麼要使用這些呢? – Makoto
我可以訪問源代碼,但它沒有被混淆。導出的類是混淆的,所以我需要編輯它(我知道該編輯什麼)。我不知道如何以正確的方式重新混淆代碼。 – Greg