【问题标题】:Proper way to use lib folder in a JAR在 JAR 中使用 lib 文件夹的正确方法
【发布时间】:2017-08-03 12:32:04
【问题描述】:

我面临一个可能微不足道的问题,但我相信最容易使用社区的帮助:

我的 jar 中有以下项目:

com (output of my compiled code)
lib/a.jar
    b.jar
    ... (about 30 more)
META-INF/MANIFEST.MF

MANIFEST.MF 的内容如下:

Manifest-Version: 1.0
Class-Path: lib/*
Main-Class: com.irrelevant.MyMainclass

我不断收到 java.lang.NoClassDefFoundError -s。

显然,缺少的类是 lib 文件夹中的一个 jar 的一部分。

值得指出的是,在我提取引用的 jar 的内容之前,我一直在正确执行这个 jar。所以一切正常。我只想使用罐子而不是提取它们的内容。

目标是能够通过简单地调用来运行应用程序:

java -jar myjar.jar

再次,当我使用引用 jar 的提取内容时,我能够执行此操作。

The platform in Windows.
Java version is Java 8.

有没有简单的方法来实现这一点?

提前致谢, 彼得

【问题讨论】:

    标签: java windows jar compilation executable


    【解决方案1】:

    您可以使用maven shade plugin 创建一个uber-jar,它将包含所有依赖类。

    Here 就是这样做的例子。

    如果您想尝试自己的解决方案,请尝试在清单文件的Class-Path 中添加明确的 jar 名称。

    【讨论】:

    • 在我的清单文件的 Class-Path 中添加显式 jar 名称,这正是我想要避免的。
    • 我不想用maven来解决这个问题。我可能很天真,但必须有一个简单的方法来实现这一点。
    • @PeterJaloveczki,即使我们使用带有 jar 的命令行类路径,我们也必须指定路径。因此看起来你必须明确指定 jar 路径。
    • 你用什么作为构建工具?
    猜你喜欢
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2019-09-19
    • 1970-01-01
    相关资源
    最近更新 更多