我创建了一个 jar,其中包含 .class 文件和使用以下 jar 代码执行类文件所需的依赖库
<target name="jar" depends="clean">
<jar destfile="${basedir}/lib/HelloWorld.jar">
<zipgroupfileset dir="${basedir}/lib" includes="*.jar" />
<fileset dir="${basedir}" includes="/com/temp/**" />
<fileset dir="${basedir}" includes="build.properties"/>
<manifest>
<attribute name="Class-Path" value="./HelloWorld.jar"/>
</manifest>
</jar>
</target>
现在我已经编写了其他 build.xml 来使用这个 jar 运行 taskdef 操作,但是当我尝试使用 taskdef 操作调用类文件时会发生以下错误,即使类文件及其依赖项存在于同一个 jar 中。
构建失败 C:\Users\kh2139\Desktop\New folder\build.xml:4: taskdef class com.temp.install.common.action.UserInstallDirRule 无法使用类加载器 AntClassLoader[C:\Users\kh2139\Desktop\新建文件夹\HelloWorld.jar]
在下面附加我的 build.xml 代码,该代码用于在 HelloWorld.jar 上运行 taskdef 操作
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="MyTask" basedir="." default="use">
<target name="use" description="Use the Task" >
<taskdef name="helloworld1" classname="com.temp.install.common.action.UserInstallDirRule" classpath="HelloWorld.jar"/>
<helloworld1/>
<taskdef name="helloworld" classname="com.temp.install.common.action.EncryptionGUID" classpath="HelloWorld.jar"/>
<helloworld/>
</target>
</project>
PS:当我在放置 HelloWorld.jar 的位置指定 lib 文件夹并在 taskdef 操作中将类路径提供给 lib 文件夹时,我可以成功运行 build.xml 文件而不会出错。
但我的问题是我想使用同一个 jar 来包含执行类时使用的依赖项。