gpt4 book ai didi

java - 使用类加载器 AntClassLoader 无法找到 Taskdef 类 com.temp.install.common.action.UserInstallDirRule

转载 作者:行者123 更新时间:2023-11-30 06:46:38 24 4
gpt4 key购买 nike

我使用以下 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 中,也会发生以下错误。

BUILD FAILED C:\Users\kh2139\Desktop\New folder\build.xml:4: taskdef class com.temp.install.common.action.UserInstallDirRule cannot be found using the classloader AntClassLoader[C:\Users\kh2139\Desktop\New folder\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 来包含执行类时使用的依赖项。

最佳答案

该错误表明 Java 在 HelloWorld.jar 中找不到 UserInstallDirRule.class。要确定 HelloWorld.jar 是否包含该类,请尝试运行 JDK 附带的 jar.exe 程序。

以下是在 Windows 命令提示符下运行 jar.exe 的示例:

C:\>jar.exe tf "C:\Users\kh2139\Desktop\New folder\HelloWorld.jar"

输出将显示 UserInstallDirRule.class 是否在 JAR 文件中。

关于java - 使用类加载器 AntClassLoader 无法找到 Taskdef 类 com.temp.install.common.action.UserInstallDirRule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43577876/

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