2014-10-07 22 views
0

我想知道是否有方法編輯類文件中的代碼?因爲我似乎無法使用cmd將java文件編譯成類文件,因爲它總是會檢測到錯誤。我正在使用的Jar文件已經有了自己的現有類文件,我想用幾行代碼更新.class文件之一。但是,當我從類文件中複製代碼並將其與我添加的代碼行一起放入java文件中,然後嘗試使用cmd進行編譯時,每當我嘗試將其編譯爲生成類文件時,cmd都會生成錯誤。如何創建/編輯.class文件代碼

這是否意味着我需要對整個jar文件進行反編譯並將其轉換爲java文件,然後將其重新編譯爲類文件,然後再次將其轉換爲新的jar文件?爲了實現我想要做的事情?

現在我正在使用這個JCIFS jar文件,我想將一些代碼行添加到一個類文件中。我將這個「https://code.google.com/p/android-smb-streaming/」作爲指導,並且我發現這個人可以用jar文件中現有類的相同代碼行自定義/添加一個新的類文件以及他自己添加的代碼行。

我可以知道我該怎麼做到這一點?謝謝。

+0

在感官編譯器中創建.class將照顧它,我們不能修改或編輯.class文件 – santhosh 2014-10-07 05:11:35

+0

然後我可以知道是否有任何可能的方式來做到這一點,因爲根據我發現的內容,也發佈了上面的鏈接。我發現這個人已經創建了他自己的.class文件,它們與現有的.class文件具有相同的代碼,只不過他創建的這個新的.class文件有一些新的代碼行添加到他創建的這個類中。所以我認爲可以創建一個包含在jar文件中,但是每當我嘗試將java文件編譯爲一個類文件時,它會一直給我提供錯誤。TT – AuroraBlaze 2014-10-07 05:14:12

+0

你最好學會理解和修復你的錯誤。 – chrylis 2014-10-07 05:14:27

回答

2

你必須在這裏做的是一個常見的情況:你發現一個開源項目的bug /功能請求。

您可以嘗試與圖書館的作者聯繫,提交您的貢獻並等待它獲得新版本,以便獲得新的酷炫功能,而不是剽竊它。

另一方面,您可以使用公開的API來根據需要對其進行定製,例如,創建一個特定的子類來覆蓋包含幾行代碼的必需方法,並以使用您的API的方式使用該API實現。

如果你想採用這種方式,不需要直接操作類文件(它要複雜得多):簡單的方法是下載項目,閱讀文檔如何設置它(所以你可以使用cmd(不包括錯誤)編譯它,添加你的補丁,編譯它,然後你可以使用新的類文件(或文件)更新使用的JAR文件:注意如果你使用inner類或lambda)。只是不要忘記提及在文檔的某個地方,因爲否則沒有人會知道庫稍微修改...

+0

經過進一步的研究,我發現JCIFS庫包含一個zip文件,其中包含一堆java文件,因此我正在考慮向其中添加一個java類,並重新編譯它,以使用一個新的jar文件再次創建一個新的jar文件apache螞蟻。但是,似乎在這樣做的時候,每當我輸入命令「ant jar」時,我遇到另一個錯誤,說「生成失敗」。所以我可以知道你對我如何解決這個問題有任何想法/提示嗎?謝謝 – AuroraBlaze 2014-10-07 07:38:01

+0

Jar是一個帶有META-INF文件夾的zip文件。該項目是開源的,他們將src與jar一起發佈(有時會發生,有時候src有不同的jar文件,等等)。檢查項目網站的文檔如何編譯。 – rlegendi 2014-10-07 07:45:48