Java 和 ProGuard - 使用类加载器 AntClassLoader 找不到 taskdef 类 proguard.ant.ProGuardTask

Posted

技术标签:

【中文标题】Java 和 ProGuard - 使用类加载器 AntClassLoader 找不到 taskdef 类 proguard.ant.ProGuardTask【英文标题】:Java and ProGuard - taskdef class proguard.ant.ProGuardTask cannot be found using the classloader AntClassLoader 【发布时间】:2022-01-20 10:06:51 【问题描述】:

我很高兴从事嵌入式 Java 程序,该程序是 10 多年前由第三方公司编写的。包括源文件和项目文件。

它被导入 Eclipse 并移植到更高的 java 版本(17)。

现在我在尝试构建程序时被卡住了。它使用 ProGuard。最新版本已添加到项目文件中。配置文件 proguard.pro 已更改为放弃 rt.jar 使用以支持新方法。但是,现在我收到一条错误消息:

BUILD FAILED
C:\mypath\build.xml:16: taskdef class proguard.ant.ProGuardTask cannot be found
 using the classloader AntClassLoader[C:\mypath\obf\proguard.jar]

build.xml(原文)如下:

<target name="obfuscate" description="obfuscate a jar file" depends="jar">
    <taskdef name="proguard" classname="proguard.ant.ProGuardTask" classpath="obf/proguard.jar" />
    <proguard configuration="obf/proguard.pro" />
</target>

“obf”文件夹位于项目内(build.xml 的子级)。文件 proguard.jar 在其中。任何人都有任何线索为什么会显示此错误?除所列内容外,未进行其他更改。

【问题讨论】:

【参考方案1】:

因此,事实证明,在新版本中,符号与以前不同。

<taskdef resource="proguard/ant/task.properties" classpath="$proguard.path/lib/proguard-ant.jar" />

【讨论】:

以上是关于Java 和 ProGuard - 使用类加载器 AntClassLoader 找不到 taskdef 类 proguard.ant.ProGuardTask的主要内容,如果未能解决你的问题,请参考以下文章

Android之代码混淆

Java代码混淆器ProGuard

类加载器体系架构和工作原理

java类加载器(转)

双亲委派策略与自定义类加载器

深入理解Java类加载器:Java类加载原理解析