我写了一个程序,其中程序中使用了各种java库。我使用NetBeans创建了我的程序的jar文件。现在,如果我在任何其他位置使用该jar,那么我将不得不手动包含所有jar库。构建来自不同罐子的可执行文件
有什么办法让所有的依赖库应该用我的程序的jar来构建一个单独的jar而不是那么多的jar文件吗?
我知道有程序将jar转换为exe,它们也做同样的事情,但我想把最后一个文件转换成jar格式,这样它也可以在Linux上运行。
谢谢
我写了一个程序,其中程序中使用了各种java库。我使用NetBeans创建了我的程序的jar文件。现在,如果我在任何其他位置使用该jar,那么我将不得不手动包含所有jar库。构建来自不同罐子的可执行文件
有什么办法让所有的依赖库应该用我的程序的jar来构建一个单独的jar而不是那么多的jar文件吗?
我知道有程序将jar转换为exe,它们也做同样的事情,但我想把最后一个文件转换成jar格式,这样它也可以在Linux上运行。
谢谢
您可以根据One-Jar
一JAR提供了一个知道如何从一个罐子加载类和资源档案内,而不是从文件系统中的罐子定制的ClassLoader。它根据归档的内部结构发现依赖jar文件,没有需要执行此操作的自定义代码。 One-JAR档案可以使用Ant或Maven2构建。应用程序可以使用Java的罐子我-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>
而且在pom.xml
<pluginRepository>
<id>onejar-maven-plugin.googlecode.com</id>
<url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
</pluginRepository>
更新pluginRepositories
节当您执行mvn package
时,您将获得yourappname-one-jar.jar
并且您可以运行它java -jar yourappname-one-jar.jar
如果你正在使用maven,这个maven-shade-plugin是你正在寻找的:https://maven.apache.org/plugins/maven-shade-plugin/
你是如何构建你的jar?这当然是可能的(它被称为fat-jar或者jar-with-dependencies),但是最简单的创建方法取决于你的构建工具。 – Edd
似乎你并没有构建**可执行文件**(如'.exe'),而是将所有内容都包装在一个胖罐子里。如果是这样的话,这个问题至少要问一次。 [是否有可能将所有的jar依赖包打包在一个大的jar包中?](http://stackoverflow.com/questions/1059851/is-it-possible-to-package-all-the-jar-dependencies-in-one -big-jar) – Javier