如何将新的java类添加到jar文件中的现有类中

我为用java编写的软件创建了新模块。 该软件从jar文件运行。我的类正在扩展该软件中的类。 我想写一个插件,它将新类添加到jar文件中。 我知道如何将jar文件解压缩到目录并使用java.util.jar包将它们添加到jar文件中,但是因为要从文件中提取很多文件,是否可以在不提取文件的情况下添加新类以某种方式直接到文件夹。

您可以使用以下命令

jar uf foo.jar foo.class 

您的问题表明您希望以编程方式执行此操作, 而不是使用命令行jar工具。

从文档看来,您至少需要从现有的JarFile获取JarInputStream ,使用getNextJarEntry迭代条目,并使用条目写入JarOutputStream ,同时使用新的JarEntry对象为每个新文件添加自己的新文件文件。

下面是以编程方式从头开始编写jar 的示例代码,这应该很好地扩展到您的情况,不同之处在于大多数JarEntry对象将来自JarInputStream

 jar uf jar-file input-file(s) 

将允许在jar中添加新文件/更新现有文件而不提取。