我有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