我有services.jar文件,並且在這個jar文件中有很少的包。我需要修改一個Java類的代碼。如何修改.jar文件中的.java文件?
示例 - services.jar
包services.jar內 - 搜索,搜索的util包內
類 - Filter.java - 需要編輯此代碼,需要作出新的jar文件。
請指引我。
我有services.jar文件,並且在這個jar文件中有很少的包。我需要修改一個Java類的代碼。如何修改.jar文件中的.java文件?
示例 - services.jar
包services.jar內 - 搜索,搜索的util包內
類 - Filter.java - 需要編輯此代碼,需要作出新的jar文件。
請指引我。
如果您有可供您修改的代碼,您可以這樣做。如果是,那麼你必須從命令行或使用任何工具,如winrar提取jar。下面是一個命令來提取命令行的jar:
jar -xvf services.jar
替換所提取的目錄中的修改或更新/類文件,並使用下面的命令從命令行重新創建罐子:
jar -cvf services.jar
還有一個可以更新jar文件的'-u'選項。有關示例,請參閱[本答案](http://stackoverflow.com/a/14244548/778118)。但是,正如其他人所提到的,修改_.java_文件不會對編譯的類文件產生任何影響。 – jahroy 2013-05-14 00:36:01
如果你有,你可以陰影的jar文件與另一個放置在班級路徑上前進。但是,如果您不明白自己在做什麼,並且錯過了某些依賴項,則可能會得到NoClassDefFoundError
。
如果您需要修改類的一部分行爲,可以使用AspectJ編織一個方面。如果要替換行爲,您可以使用Around
方面。
您可以使用winzip探索jar並手動更新jar中的文件。 – 2013-05-14 00:26:23
也許,你將不得不關閉這個問題,因爲有http://stackoverflow.com/questions/12057554/creating-a-jar-file-after-doing-some-modifications-to-it。唯一的答案看起來不錯。 – lifus 2013-05-14 00:28:07
爲什麼你想修改jar裏面的java文件?您應該更新類文件。 – NullPointerException 2013-05-14 00:30:15