2013-05-14 95 views
-3

我有services.jar文件,並且在這個jar文件中有很少的包。我需要修改一個Java類的代碼。如何修改.jar文件中的.java文件?

示例 - services.jar

包services.jar內 - 搜索,搜索的util包內

類 - Filter.java - 需要編輯此代碼,需要作出新的jar文件。

請指引我。

+0

您可以使用winzip探索jar並手動更新jar中的文件。 – 2013-05-14 00:26:23

+0

也許,你將不得不關閉這個問題,因爲有http://stackoverflow.com/questions/12057554/creating-a-jar-file-after-doing-some-modifications-to-it。唯一的答案看起來不錯。 – lifus 2013-05-14 00:28:07

+3

爲什麼你想修改jar裏面的java文件?您應該更新類文件。 – NullPointerException 2013-05-14 00:30:15

回答

3

如果您有可供您修改的代碼,您可以這樣做。如果是,那麼你必須從命令行或使用任何工具,如winrar提取jar。下面是一個命令來提取命令行的jar:

jar -xvf services.jar 

替換所提取的目錄中的修改或更新/類文件,並使用下面的命令從命令行重新創建罐子:

jar -cvf services.jar 
+0

還有一個可以更新jar文件的'-u'選項。有關示例,請參閱[本答案](http://stackoverflow.com/a/14244548/778118)。但是,正如其他人所提到的,修改_.java_文件不會對編譯的類文件產生任何影響。 – jahroy 2013-05-14 00:36:01

1

您不應該更新java文件。 Jar文件是用於歸檔編譯的Java類

相反,你應該作出改變

後更新的類文件,請參閱該article

0

如果你有,你可以陰影的jar文件與另一個放置在班級路徑上前進。但是,如果您不明白自己在做什麼,並且錯過了某些依賴項,則可能會得到NoClassDefFoundError

如果您需要修改類的一部分行爲,可以使用AspectJ編織一個方面。如果要替換行爲,您可以使用Around方面。