【问题标题】:Building executable from different jars从不同的 jar 构建可执行文件
【发布时间】:2015-08-28 09:00:45
【问题描述】:

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

有什么方法可以让所有依赖库都用我的程序的 jar 来构建以构建单个 jar 而不是这么多 jar 文件?

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

谢谢

【问题讨论】:

  • 你是如何构建你的 jar 的?这当然是可能的(它被称为 fat-jar 或 jar-with-dependencies),但创建它们的最简单方法取决于您的构建工具。
  • 好像你不是在构建一个可执行文件(就像一个.exe),而是把所有东西都打包在一个胖罐子里。如果是这样的话,这个问题至少已经被问过一次了。 Is it possible to package all the jar dependencies in one big jar?

标签: java jar


【解决方案1】:

你可以使用One-Jar

One-JAR 提供了自定义类加载器,它知道如何从归档文件中的 jar 中加载类和资源,而不是从文件系统中的 jar 中加载。它根据存档的内部结构发现依赖 jar 文件,不需要自定义代码来执行此操作。 One-JAR 档案可以使用 Ant 或 Maven2 构建。您的应用程序可以使用 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>

并更新pom.xml 中的pluginRepositories 部分

<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

【讨论】:

    【解决方案2】:

    是的,它可以做到。由于您使用的是 Netbeans,因此 article 可能会对您有所帮助。

    【讨论】:

    【解决方案3】:

    如果你使用的是 maven,这个 maven-shade-plugin 就是你要找的:https://maven.apache.org/plugins/maven-shade-plugin/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 2013-08-20
      • 2014-01-10
      • 2023-03-06
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      相关资源
      最近更新 更多