【问题标题】:How do I create a JAR where the package is in the root folder? (and not inside a bin folder)如何创建包位于根文件夹中的 JAR? (而不是在 bin 文件夹内)
【发布时间】:2014-09-20 21:37:02
【问题描述】:

我正在尝试使用以下命令从命令行创建一个 jar:

jar cfm EWSTerabot.jar ./MyManifest.txt ./bin/ews/

但是,当我执行 JAR 时,我收到以下错误 “无法找到或加载主类 ews.main.gateway.Main”

我收到此错误的原因是当我提取 JAR 并查看内部时,主类位于 bin/ews/main/gateway/Main.class。如何创建 JAR 以使 ews 文件夹位于根目录且 Main 类位于 ews/main/gateway/Main.class。我基本上想创建没有这个 bin 文件夹的 JAR。

【问题讨论】:

    标签: java unix jar command


    【解决方案1】:

    来自官方 jar 文档 (http://docs.oracle.com/javase/tutorial/deployment/jar/build.html):

    jar cfm EWSTerabot.jar ./MyManifest.txt -C ./bin .
    

    使用 -C 指定与当前目录不同的目录。

    【讨论】:

    • 谢谢!我有一些需要导入的外部库(以罐子的形式)。它们位于 ./libs。如何使用 JAR 打包这些内容?
    • 不确定你所说的“用 jar 包”是什么意思。如果可以将它们放在与 EWSTerabot.jar 相同的目录中,则可以在 manifest.mf 文件中指定它们: Class-Path: lib/library1.jar lib/library2.jar Class-Path 是标准 java 参数清单文件,并且可以包含以空格分隔的外部库列表。当您指定相对路径时,它是相对于 EWSTerabot.jar 的位置的这样做的好处是您只需将您的 jar 传递给 java 命令即可启动您的应用程序。
    【解决方案2】:

    您必须使用jar 命令的-C 选项,该选项告诉您切换到指定文件夹并包括之后列出的文件和文件夹。

    例如在 jar 文件中包含 ews 文件夹/包:

    jar cfm EWSTerabot.jar ./MyManifest.txt -C bin/ ews/
    

    【讨论】:

    • 谢谢!我有一些需要导入的外部库(以罐子的形式)。它们位于 ./libs。如何使用 JAR 打包这些内容?
    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多