是否可以从打包在 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 中被夸大了,这不是我想要的。谢谢你的帮助。