【问题标题】:How to create an executable jar with dependency jars如何使用依赖项 jar 创建可执行 jar
【发布时间】:2019-01-24 06:16:23
【问题描述】:

我创建了一个依赖于一些外部 jar 的 java 应用程序。现在我想为我的项目创建一个可执行的 jar。这意味着如果我双击该项目,那么它应该会执行。

【问题讨论】:

    标签: java


    【解决方案1】:

    您可以使用 Ant 轻松做到这一点:

    <jar jarfile="MyJar.jar" basedir="bin">
        <manifest>
        <attribute name="Class-Path" value="lib/lib1.jar lib/lib2.jar lib/lib3.jar"/>
        <attribute name="Built-By" value="me"/>
        <attribute name="Main-Class" value="mypackage.Myclass"/>
        </manifest>
    </jar>
    

    这会将所有适当的条目添加到清单文件中。为了能够运行 jar,还需要创建一个 lib 文件夹并将所有依赖 jar 放在那里:

    myjar.jar
    lib/lib1.jar
    lib/lib2.jar
    lib/lib3.jar
    

    【讨论】:

    • 属性顺序似乎很重要。 Class-Path 需要出现在 Main-Class 之前。
    【解决方案2】:

    使用名为“fatjar”的eclipse插件

    这是更新站点

    http://kurucz-grafika.de/fatjar

    只需右键单击项目并使用 fatjar 选项,下一步允许您选择将哪个库包含在 *.jar 中

    【讨论】:

      【解决方案3】:

      您需要将 MANIFEST.MF 文件添加到您的应用程序的 JAR 中,(在 META-INF 目录下 - 如果您使用“jar”命令行工具,它将确保文件在正确的位置结束)。它需要包含两个属性(至少):

      • Main-Class:[应用中具有 main 方法的类的完全限定名称]
      • 类路径:[应用程序的 JAR 依赖项列表]

      有关 JAR 文件中清单文件的更多详细信息,请参见此处:http://java.sun.com/docs/books/tutorial/deployment/jar/manifestindex.html

      如果您使用像 Apache Maven 这样的构建工具,您可能会发现它能够为您生成此文件。

      【讨论】:

        【解决方案4】:

        您想在 JAR 的清单文件中设置 Class-Path 属性。

        This page 应该会给你一个很好的起点。

        【讨论】:

          【解决方案5】:

          考虑使用IzPack 等打包工具或JSmooth 等包装工具

          【讨论】:

          • 只是为了节省其他时间,IzPack 是一个部署工具,它将主 jar 和其他 jar 安装在计算机上的某个位置,而 JSmooth 将所有这些 jar 封装在一个 EXE 文件中,以便应用程序可以在 Windows 上运行。
          【解决方案6】:

          如果您使用 Maven,程序集插件会非常简单地为您执行此操作:http://maven.apache.org/plugins/maven-assembly-plugin/howto.html

          否则,您需要按照 JAR 文件教程中的说明进行操作:http://java.sun.com/docs/books/tutorial/deployment/jar/index.html 并创建一个清单文件,其中包括您的主类为 Main-Class: [classname] 并将您的外部 jar 列为 Class-Path: theirJar1 theirJar2 等。

          【讨论】:

            猜你喜欢
            • 2021-09-04
            • 2021-09-12
            相关资源
            最近更新 更多