从不同的罐子建立可执行文件

时间:2015-08-28 09:00:46

标签: java jar

我编写了一个程序,其中包含程序中使用的各种java库。我使用netbeans制作了我的程序的jar文件。现在,如果我在任何其他位置使用该jar,那么我将不得不手动包含所有jar库。

有没有办法让所有依赖库都可以使用我的程序jar来构建一个jar而不是那么多jar文件?

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

由于

3 个答案:

答案 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/