gpt4 book ai didi

java - 具有依赖项的可执行 Jar

转载 作者:行者123 更新时间:2023-11-29 04:00:51 25 4
gpt4 key购买 nike

我正在尝试从命令行构建一个可执行 jar(我不想使用 ant 或 OneJar)。这是我的 file.jar 的内容:

jar tvf file.jar
0 Mon Sep 20 17:16:12 CEST 2010 lib/
45396 Mon Sep 20 17:16:12 CEST 2010 lib/org.apache.commons.logging_1.0.4.v201005080501.jar
321330 Mon Sep 20 17:16:12 CEST 2010 lib/org.apache.commons.httpclient_3.1.0.v201005080502.jar
55003 Mon Sep 20 17:16:12 CEST 2010 lib/org.apache.commons.codec_1.3.0.v20100518-1140.jar
0 Mon Sep 20 19:15:00 CEST 2010 META-INF/
265 Mon Sep 20 19:12:44 CEST 2010 META-INF/MANIFEST.MF
530609 Mon Sep 20 17:16:12 CEST 2010 ped.jar

META-INF/MANIFEST.MF的内容:

Manifest-Version: 1.0
Class-Path: ped.jar lib/org.apache.commons.codec_1.3.0.v20100518-1140.jar lib/org.apache.commons.httpclient_3.1.0.v201005080502.jar lib/org.apache.commons.logging_1.0.4.v201005080501.jar
Main-Class: fr.inserm.umr915.bomcat.ped.PedigreeDrawer

并且 ped.jar 确实包含主类

jar tvf ped.jar | grep PedigreeDrawer.class
39541 Mon Sep 20 17:16:10 CEST 2010 fr/inserm/umr915/bomcat/ped/PedigreeDrawer.class

但是当我尝试执行 file.jar 时,出现错误:

java -jar file.jar
Exception in thread "main" java.lang.NoClassDefFoundError: fr/inserm/umr915/bomcat/ped/PedigreeDrawer
Caused by: java.lang.ClassNotFoundException: fr.inserm.umr915.bomcat.ped.PedigreeDrawer
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

所以,我在这里遗漏了一些东西。我不能通过仅包含依赖项来打包可执行 jar 吗?

谢谢你的帮助

皮埃尔

最佳答案

如前所述,Class-Path: 属性中的 jar 与 jar 文件的位置相关,而不是在 jar 文件内部。这可能是 Java 旨在运行小程序的时代遗留下来的。

您需要使用像 maven uberjar 这样的工具将所有需要的类合并到一个 jar 中,以创建一个独立的可执行 jar。

当然,如果您绝对不想使用工具,您也可以只将所有 jar 解压缩到一个目录中,添加 META-INF 和 list ,然后再次压缩所有内容。

关于java - 具有依赖项的可执行 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3753894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com