gpt4 book ai didi

java - 使用前缀解压 JAR 中的依赖项

转载 作者:行者123 更新时间:2023-11-30 08:16:51 25 4
gpt4 key购买 nike

我正在制作一个简单的批处理程序,应将其打包在包含所有依赖项的 JAR 中。JAR-in-JAR eclipse 方式使我的程序如此缓慢,所以我选择将所需的库提取到我的 JAR 中。这样可以加快执行速度,但会使我的 JAR“根”文件夹变得非常冗长。为了提取 jar,我使用了

<zipfileset excludes="META-INF/**.*" src="${dep.dir}/antlr-2.7.7.jar" />

并且它工作正常。当我尝试使用这样的前缀

<zipfileset excludes="META-INF/**.*" prefix="dep/" src="${dep.dir}/antlr-2.7.7.jar" />

我的程序因 ClassNotFoundException 崩溃,因为它找不到该异常。我尝试编辑 MANIFEST 以将 dep/文件夹添加到类路径中,但它不起作用。有人可以帮助我吗?

最佳答案

Java 类文件必须存在于 .jar 文件中,并且其路径与其完全限定名称(即包+“.”+简单类名)完全匹配。例如,com.example.Person 类必须作为 com/example/Person.class 存在于 .jar 文件中。

这意味着在包含来自另一个 .jar 的类文件时,您不能使用 zipfilesetprefix 属性。

Class-Path attribute list 的 不引用 .jar 文件中的路径。它是其他 .jar 文件的相对 URL(相对于包含 list 的 .jar)的以空格分隔的列表。 .jar 文件始终被视为类路径条目的根;无法将 .jar 中的路径引用为类路径条目。

我不确定 .jar 文件的根目录有何“冗长”之处。据我所知,ANTLR 类仅向其中添加一个 org 目录。

关于java - 使用前缀解压 JAR 中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29534069/

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