使用ANT从jar库加载java premain类

使用ANT从jar库加载java premain类,java,class,ant,jar,Java,Class,Ant,Jar,可以从打包在jar库中的jar库加载premain类吗?我有以下设置: 我的图书馆内容: # 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/subpackag

可以从打包在jar库中的jar库加载premain类吗?我有以下设置:

我的图书馆内容:

# 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类

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放在同一个文件夹中,并相应地更新类路径。

希望将来它将支持它:另外,我发现:
类路径头指向本地网络上的类或JAR文件,不是JAR文件中的JAR文件,也不是可通过internet协议访问的类。要将JAR文件中的JAR文件中的类加载到类路径中,必须编写自定义代码来加载这些类。