2013-05-14 93 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方面。