我编写了一个程序,其中包含程序中使用的各种java库。我使用netbeans制作了我的程序的jar文件。现在,如果我在任何其他位置使用该jar,那么我将不得不手动包含所有jar库。
有没有办法让所有依赖库都可以使用我的程序jar来构建一个jar而不是那么多jar文件?
我知道有些程序可以将jar转换为exe,它们也会做同样的事情,但我想把最后一个文件转换为jar格式,这样它也可以在Linux上运行。
由于
答案 0 :(得分:5)
您可以使用One-Jar
One-JAR提供自定义类加载器,它知道如何从存档中的jar中加载类和资源,而不是从文件系统中的jar加载。它根据存档的内部结构发现依赖jar文件,没有自定义代码来执行此操作。可以使用Ant或Maven2构建One-JAR存档。您的应用程序可以使用java -jar my-app.jar
运行使用Maven:您需要更新plugins
部分pom.xml
:
<plugin>
<groupId>org.dstovall</groupId>
<artifactId>onejar-maven-plugin</artifactId>
<version>1.4.4</version>
<executions>
<execution>
<goals>
<goal>one-jar</goal>
</goals>
</execution>
</executions>
</plugin>
更新pluginRepositories
pom.xml
部分
<pluginRepository>
<id>onejar-maven-plugin.googlecode.com</id>
<url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
</pluginRepository>
当您执行mvn package
时,您将获得yourappname-one-jar.jar
并且可以运行java -jar yourappname-one-jar.jar
答案 1 :(得分:3)
是的,可以做到。由于您使用的是Netbeans,因此article可能会对您有所帮助。
答案 2 :(得分:3)
如果你正在使用maven,那么你正在寻找这个maven-shade-plugin:https://maven.apache.org/plugins/maven-shade-plugin/