【问题标题】:how to create a runnable jar file from command line similar to eclipse如何从类似于 eclipse 的命令行创建可运行的 jar 文件
【发布时间】:2013-04-18 09:11:34
【问题描述】:

我了解到 Eclipse 会生成一个可运行的 jar 文件,其中包含提取的所有库 .jar 文件并将其包含在 jar 文件中。从命令提示符手动创建 jar 文件时,我该如何做类似的事情。我是否需要将所有 lib jar 提取到 classes 文件夹中?

目前我正在使用 -

    jar cvfm example.jar manifest.txt -C  Classes/ .

这会创建一个包含所有类文件的 jar 文件,并且我需要将所有库 jar 放在与此 example.jar 存在的同一文件夹中。

【问题讨论】:

    标签: java linux command-line jar executable-jar


    【解决方案1】:

    无法从 jar 命令行实用程序中执行此类操作。依赖问题有3个主要解决方案:

    1. 在您的 MANIFEST.MF 中,您可以引用其他 jar 文件作为类路径的一部分,然后人们可以使用 java -jar [just your jar] 调用您的代码,您的依赖项将被提取
    2. 您可以将您的代码和依赖项打包到一个胖 jar 中(这是您所描述的)。通常您只需将项目转换为使用一些构建工具(比简单的 javac 和 jar 更高级)并配置该工具。例如with maven。查看 2 种不同的方法 herehere
    3. (再次使用构建工具)您可以使用比胖罐更好的东西 - 使用 one-jar。不同之处在于,使用胖 jar 时,您会冒着不同库中同名文件“冲突”的风险

    【讨论】:

      【解决方案2】:

      以上答案无疑是正确的。诚然又快又脏:

      将所需的 jar 文件复制到 javac 创建类文件的输出目录中。

      cp $LIB_PATH/*.jar $TARGET_PATH
      cd $TARGET_PATH
      for filename in ./*.jar; do
          echo "merge library $filename to FAT jat"
          unzip "$filename"
          rm -rf META-INF
          rm "$filename"
      done
      

      然后创建 jar 文件并确保包含所有必需的类:

      jar cmf manifest.mf $TARGET_JAR_NAME com/* javax/* org/*
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 2013-03-29
        • 2014-04-09
        • 2012-10-04
        相关资源
        最近更新 更多