簡體   English   中英

如何從Jar文件中提取源代碼?

[英]How do I extract source code from a Jar file?

我收到了Java產品的源代碼以進行進一步的更改。 存檔包含一堆JAR文件。

是否足以開發應用程序或僅用於分發的文件?

我收到了Java產品的源代碼......

如果您確實收到了產品的源代碼,而您所擁有的只是JAR文件,那么JAR文件(實際上是具有不同文件后綴和特定類型“清單”的ZIP文件) 應該包含一堆文件后綴為“.java”的文件。 您應該能夠使用任何ZIP存檔工具進行檢查。

如果JAR中沒有“.java”文件(例如,只有很多“.class”和其他文件),則表示您沒有該產品的源代碼。 鑒於您不是Java開發人員,進行更改將非常困難

假設您正在合法地執行此操作(即,在產品開發人員明確或暗示的許可下),如果您還可以獲取產品的構建說明,則可以節省大量時間。 例如,如果它是使用Ant構建的,則需要“build.xml”文件。

jar類似於zip文件,因此它們可能包含也可能不包含開發所需的源代碼。 你可以在這里閱讀jar文件。

通常,您打包.class(已編譯)文件並將它們分發到.jar文件中,但是可以將任何類型的文件(包括源代碼)放在.jar存檔中。 如果您需要更改庫中的代碼,則需要查看源代碼。

項目中的.jar文件也可能是第三方(或內部專有)庫,您根本不需要更改它們。 包含您剛剛使用的庫而不在jar中進行修改是很常見的。 如果可以訪問其余的應用程序代碼,則可以修改它而不用觸及庫代碼。

任何現代Java IDE都允許您放入jar文件並將其用作庫代碼。 這不需要源等。然后您可以開發包含更改的代碼。

如果您需要在jar中使用ALTER代碼,那么通過使用您需要更新的jar的源代碼,然后使用它將會更好。

如果您沒有源代碼,並且需要更改類,那么您可以使用例如JAD將該類反編譯為Java文件(小心,可能包含錯誤),然后使用它。 你只需要在類路徑中的jar前面有這個類(除非jar被密封,然后你有一個關於stackoverflow的全新問題)。

您的團隊中是否有更多經驗豐富的Java程序員,您可以尋求幫助嗎?

您可以嘗試將jar文件反編譯回其源代碼,否則jar文件對開發沒有多大幫助。

但是,當jar文件包含一些您正在處理的項目所必需的庫/包/類時,它們可以幫助您。 這樣,如果您使用的是Netbeans IDE,則可以將它們添加到編譯路徑中,並且在使用它們時甚至不會在源處窺視它們。 但是,如果您在項目上進行某種增量開發,這將最有效。 所以,它在很大程度上取決於你如何構建你的軟件,即它是增量的還是你想要修改你收到的東西...對於后者你可能會考慮去編譯或要求源代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM