我有一個GUI和一個列表框來顯示類中的方法列表。 我可以使用反射來實現它。 但是我可以在選擇方法名稱的另一個文本區域中查看源代碼嗎?如何在我自己的JAVA GUI中查看來自jar文件的源代碼?
我知道反編譯器。但我不想在他們的窗口中看到源代碼。
我想使用一些第三方庫,以便我可以在我自己的GUI中看到特定方法的源代碼。
請建議是否有適用於此的API。
我有一個GUI和一個列表框來顯示類中的方法列表。 我可以使用反射來實現它。 但是我可以在選擇方法名稱的另一個文本區域中查看源代碼嗎?如何在我自己的JAVA GUI中查看來自jar文件的源代碼?
我知道反編譯器。但我不想在他們的窗口中看到源代碼。
我想使用一些第三方庫,以便我可以在我自己的GUI中看到特定方法的源代碼。
請建議是否有適用於此的API。
您將需要某種可以鏈接到的反編譯器。我不確定是否有任何庫,但是這裏有一個鏈接到JD Java Decompiler。
請記住,在編譯過程中會丟失變量名等,因此如果反編譯生成的源代碼可能會降低可讀性。
如果您有權訪問源,可以將其鏈接到類文件,並在鏈接的源文件中找到所選的方法源。這可以通過對源文件進行簡單的單步解析來實現。
你的最大的問題將是確定何時一個方法結束,並且一個簡單的解決方案是計算{
的和}
的,並確定當所述方法聲明的{
被關閉。
我曾經創建過包含它自己的源代碼查看器的應用程序。我認爲這是反編譯器的一個很好的選擇,反編譯器可以有相當的依賴性。
我在使用NetBeans,所以打包.java
文件就像更改一個篩選器選項一樣簡單。我檢查了java屬性來查找jar文件,並像掃描java源文件的任何zip文件一樣對其進行掃描。採用這種方法的GUI具有填充了源文件的JTreeTable和顯示源代碼的JTextArea是微不足道的。
我相信你可以做同樣的事情多加一步 - 裁剪源只包含選定的方法。我認爲它應該歸結爲簡單的解析器,一個用於計算開放和關閉括號的解析器。
如果您需要它,我會離開較早的答案,但JODE尚未更新很久。在周圍搜索,我找不到任何開源的反編譯器或以庫的形式提供的反編譯器。
JODE可能正是你想要的。核心反編譯器在GNU LGPL下作爲一個庫發佈,因此您可以將它集成到您的程序中,而不會出現任何問題。
這是一個古老的問題,但在過去的一年裏,由於反編譯器的風景發生了顯着變化,我覺得值得復活。
Procyon是一個開源框架,其中包含一個Java反編譯器。它是用Java編寫的,反編譯器API可以很容易地集成到另一個應用程序中。實際上,已經有兩個第三方GUI前端,包括SecureTeam Java Decompiler。
CFR還沒有可用的源代碼,但它也是一個優秀的反編譯器。它也是用Java編寫的,儘管我沒有嘗試將它與現有應用程序集成,但它當然應該是可能的。
我有一個解決方案。但要檢查是否可行。如您所說,我們可以使用一些反編譯器並獲取完整的源代碼。 然後我們可以使用eclipse庫來解析使用AST的代碼,然後找到相應的方法。 理論上這個解決方案應該可以工作。但是我想花一些精力來實現這個使用eclipse庫。 感謝大家幫助我找到解決方案。 – Sreejesh 2010-08-18 11:14:17