2015-08-28 42 views
3

我写了一个程序,其中程序中使用了各种java库。我使用NetBeans创建了我的程序的jar文件。现在,如果我在任何其他位置使用该jar,那么我将不得不手动包含所有jar库。构建来自不同罐子的可执行文件

有什么办法让所有的依赖库应该用我的程序的jar来构建一个单独的jar而不是那么多的jar文件吗?

我知道有程序将jar转换为exe,它们也做同样的事情,但我想把最后一个文件转换成jar格式,这样它也可以在Linux上运行。

谢谢

+1

你是如何构建你的jar?这当然是可能的(它被称为fat-jar或者jar-with-dependencies),但是最简单的创建方法取决于你的构建工具。 – Edd

+0

似乎你并没有构建**可执行文件**(如'.exe'),而是将所有内容都包装在一个胖罐子里。如果是这样的话,这个问题至少要问一次。 [是否有可能将所有的jar依赖包打包在一个大的jar包中?](http://stackoverflow.com/questions/1059851/is-it-possible-to-package-all-the-jar-dependencies-in-one -big-jar) – Javier

回答

3

是的,它可以做到。既然你使用Netbeans,这个article可能会帮助你。

+1

你会如何用自己的话来描述必要的步骤? (没有链接到外部的stackoverflow) – slartidan

+0

@slartidan对不起,我链接了一篇文章,因为它总结了所有步骤稍长。 – Amila

+0

[元 - 答案只包含其他链接真的很好的答案?](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good -answers)。 – Javier

5

您可以根据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

相关问题