如何在.jar文件中修改.java文件?

如何在.jar文件中修改.java文件?,java,Java,我有services.jar文件,在这个jar文件中有几个包。我需要修改其中一个java类的代码 示例-services.jar services.jar内的包-搜索,util 搜索包Filter.java中的类需要编辑此代码并创建一个新的jar文件 请指导我。如果您有要修改的代码,您可以这样做。如果是,则必须从命令行或使用任何工具(如winrar)提取jar。下面是从命令行提取jar的命令: jar -xvf services.jar 在提取的目录中替换修改或更新的/class文件,并使用命

我有services.jar文件,在这个jar文件中有几个包。我需要修改其中一个java类的代码

示例-services.jar

services.jar内的包-搜索,util

搜索包Filter.java中的类需要编辑此代码并创建一个新的jar文件


请指导我。

如果您有要修改的代码,您可以这样做。如果是,则必须从命令行或使用任何工具(如winrar)提取jar。下面是从命令行提取jar的命令:

jar -xvf services.jar
在提取的目录中替换修改或更新的/class文件,并使用命令行中的以下命令重新创建jar:

jar -cvf services.jar

您不应该更新java文件。Jar文件用于归档已编译的java类

相反,您应该在进行更改后更新类文件


如果有必要,可以在jar文件前面的类路径上放置另一个jar文件作为阴影。但是,如果您不了解自己在做什么,并且错过了一些依赖项,则可能会得到一个
NoClassDefFoundError


如果需要修改类的部分行为,可以使用AspectJ在方面中进行编织。如果您想替换行为,您可以使用
左右的
特性。

您可以使用winzip浏览jar并手动更新jar中的文件。也许,您必须关闭此问题,因为存在问题。我觉得唯一的答案很好。为什么要修改jar中的java文件?您应该改为更新类文件。首先,noramlly JAR不包含.java文件,没有说它们不能,只是正常情况下,它们不包含。因此,试图从Jar文件中提取一个文件似乎毫无意义——IMHO*“需要编辑此代码,需要创建一个新的jar文件”是您的答案。请看一看以进一步澄清NullPointerException的评论:修改.java源文件不会对相关的.class文件产生影响,因此在运行(或使用它编译)jar文件时不会影响jar文件的行为。还有一个
-u
选项可以就地更新jar文件。有关示例,请参见。但是,正如其他人所提到的,修改.java文件不会对编译的类文件产生任何影响。