我得到.jar文件的路径作为我的Java应用程序的用户输入。我需要在类路径中添加一个类到该.jar文件,然后将.jar文件发送到外部服务(通过网络)。其他站点上的服务必须能够从.jar文件加载类,包括我在应用程序中添加的那个类。以编程方式将类添加到现有的JAR文件
该解决方案应该具备以下属性:
- 通用:应该对任何能想到的工作的.jar包含类的用户可以给我。
- 自动:类添加必须由我的Java应用程序完成。
要添加到.jar文件的类具有不与该JAR中的任何其他类相冲突的名称。
我得到.jar文件的路径作为我的Java应用程序的用户输入。我需要在类路径中添加一个类到该.jar文件,然后将.jar文件发送到外部服务(通过网络)。其他站点上的服务必须能够从.jar文件加载类,包括我在应用程序中添加的那个类。以编程方式将类添加到现有的JAR文件
该解决方案应该具备以下属性:
要添加到.jar文件的类具有不与该JAR中的任何其他类相冲突的名称。
由于jar是普通的zip文件,因此可以使用java.util.zip
提供的工具。
要在其他人所说添加,如果你需要加载上另一端的JAR,你应该检查http://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html
我明白,你有你的类路径,而你想要做什么是为了将其注入到现有的JAR文件中而获得其字节阵列表示。
整洁。
哈瓦看看javax.tools
封装,可提供JDK 1.6及更高版本:
http://docs.oracle.com/javase/6/docs/api/javax/tools/package-summary.html
可以以编程方式编译代码,并利用现有的机制,有序列化的字节码。如果不是的话,ASM也会有帮助:http://asm.ow2.org/
我想说java.util.jar。 –
@EdwinDalorzo,但我怎么用'java.util.jar'或'java.util.zip'软件包将某些东西写入现有的.jar?这两个软件包似乎只允许阅读,因为我看到它... – drasto
请参阅如何将文件添加到现有的存档:http://stackoverflow.com/questions/3048669/how-can-i-add-entries-到现有的zip文件在java – mbelow