2012-11-27 69 views
0

我得到.jar文件的路径作为我的Java应用程序的用户输入。我需要在类路径中添加一个类到该.jar文件,然后将.jar文件发送到外部服务(通过网络)。其他站点上的服务必须能够从.jar文件加载类,包括我在应用程序中添加的那个类。以编程方式将类添加到现有的JAR文件

该解决方案应该具备以下属性:

  • 通用:应该对任何能想到的工作的.jar包含类的用户可以给我。
  • 自动:类添加必须由我的Java应用程序完成。

要添加到.jar文件的类具有不与该JAR中的任何其他类相冲突的名称。

回答

1

由于jar是普通的zip文件,因此可以使用java.util.zip提供的工具。

+3

我想说java.util.jar。 –

+0

@EdwinDalorzo,但我怎么用'java.util.jar'或'java.util.zip'软件包将某些东西写入现有的.jar?这两个软件包似乎只允许阅读,因为我看到它... – drasto

+0

请参阅如何将文件添加到现有的存档:http://stackoverflow.com/questions/3048669/how-can-i-add-entries-到现有的zip文件在java – mbelow

0

我明白,你有你的类路径,而你想要做什么是为了将其注入到现有的JAR文件中而获得其字节阵列表示。

整洁。

哈瓦看看javax.tools封装,可提供JDK 1.6及更高版本:

http://docs.oracle.com/javase/6/docs/api/javax/tools/package-summary.html

可以以编程方式编译代码,并利用现有的机制,有序列化的字节码。如果不是的话,ASM也会有帮助:http://asm.ow2.org/

+0

嗯,我真的不需要编译任何东西......在我的应用程序项目中将有一个编译类。我们可以将它视为我需要注入现有JAR的资源。 – drasto

+1

如果你可以找到实际的'.class'文件,那么你需要做的就是使用'java.util.jar'包,就像这里提供的其他答案一样。 – Isaac

相关问题