[英]How to recreate java classes from .class?
我有一些帶有很多.class java類的程序包,我可以以某種方式重新創建嗎? 還是行家?
或者我該怎么做才能使用此.classes的主類,但是由於.class擴展名而看不到它?
我試圖將.class擴展名更改為.java,但是編碼會出錯...重命名為.java后無法讀取。
還是可以從中依賴? 或最佳解決方案是什么?
我有這個主要的:
public class Main {
public static void main(String[] args) {
Snake snake = new Snake();
snake.addAI(new MintaAi(), Color.red.darker());
snake.addAI(new MintaAi(), Color.blue.darker());
snake.start();
}
}
而且我必須運行它,但我需要的只是.class擴展名。
假設您正在談論.class文件提供的一些第三方輸入; 查看 Java源代碼的一種簡單方法是將這些類文件放入JAR文件。 並將該JAR文件添加到IntelliJ中的項目設置中。 當您知道在該庫中出現的類上按“ F3”時,IntelliJ將反編譯該類文件的內容並將其顯示給您。
另外,您可以研究命令行工具,例如jd-gui 。 您必須了解所有這些技術都在一定程度上受到限制。 例如,當混淆器觸摸字節碼時,反編譯器可能很難顯示任何有用的信息。
但真正的答案是:您想退后一步,對打算使用的概念有所了解。 就像“ .java”一樣,表示Java源代碼; .class的意思是“從Java源代碼編譯的字節碼”。
當然:當Snake或MintaAi是您編寫的類時; 那么您應該將源代碼放在某處。
使用bytecodeview http://bytecodeviewer.com/ 。 它包含幾種類型的反編譯器。 您可以更改反編譯器並查看反編譯代碼質量的預覽。 如果代碼量很小並且不復雜,則可以很好地工作。
壞部分是:泛型(類型擦除),非常壞的部分是反射(代理調用),真正壞的部分是在類文件中使用字節碼注入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.