gpt4 book ai didi

java - 使用 ANT 从 jar 库加载 java premain-class

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

是否可以从打包在 jar 库中的 jar 库加载 premain-class?我有以下设置:

我图书馆的内容:

# jar -tf myLibrary.jar
META-INF/
META-INF/MANIFEST.MF
agent/
agent/myAgent.jar
com/
com/package/
com/package/subpackage/
com/package/subpackage/A.class
com/package/subpackage/B.class
com/package/subpackage/C.class

现在在我的 MANIFEST.MF 中我想使用类似的东西:

Manifest-Version: 1.0
Premain-Class: com.agentpackage.AgentClass
Class-Path: agent/myAgent.jar

但不幸的是,如果我将此设置与 -javaagent:myLibrary.jar 一起“使用”,它会给我以下错误消息:

java.lang.ClassNotFoundException: com.agentpackage.AgentClass
FATAL ERROR in native method: processing of -javaagent failed

是否可以通过某种方式访问​​ .jar 文件中的 premain-class?

myLibrary.jar 的(截断的)ANT 构建文件:

<jar destfile="myLibrary.jar" update="true">
<zipfileset dir="lib" includes="myAgent.jar" prefix="agent" />
<manifest>
<attribute name="Class-Path" value="agent/myAgent.jar" />
<attribute name="Premain-Class" value="com.agentpackage.AgentClass" />
</manifest>
</jar>

我知道我可以做到以下几点:

<jar destfile="myLibrary.jar" update="true">
<zipgroupfileset dir="lib" includes="myAgent.jar" />
<manifest>
<attribute name="Premain-Class" value="com.agentpackage.AgentClass" />
</manifest>
</jar>

但是 myAgent.jar 的内容在 myLibrary.jar 中膨胀了,这不是我想要的。感谢您的帮助。

最佳答案

Java 不支持加载嵌套的 jar。

您必须使用膨胀版本或将这两个 jar 放在同一个文件夹中并相应地更新类路径。

关于java - 使用 ANT 从 jar 库加载 java premain-class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10154957/

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