java - 为什么ProGuard输出的JAR文件中没有class文件?

标签 java proguard war obfuscation

我正在尝试使用 ProGuard 来混淆我的 JAR 文件。

具体来说...我有一个 Java/Spring Web 应用程序。所以我生成了一个 WAR 文件。

我已将 WAR 文件的/WEB-INF/classes 文件夹中的所有类复制到新的 JAR 文件中。

我启动了 ProGuard GUI 并选择了 JAR 文件作为输入。我指定了一个新的output.JAR 文件。我将所有/WEB-INF/lib/*.jar 文件添加为“库 jar”。

当我单击“处理!”时,我接受 ProGuard GUI 中的所有默认设置。在最后一页上,它经历了处理......有一个“库类的重复定义”注释列表(我很确定我可以忽略它?)。

然后生成输出 JAR。但输出 JAR 中只有三个类文件...其中的文件是我编写的简单的小测试类,用于执行简单的代码测试,并且不要以任何方式触及应用程序的其余部分。

输出 JAR 文件中没有我的 Web 应用程序的类文件。

我错过了什么?

最佳答案

ProGuard 希望输入类的文件名与其完全限定的类名相对应,不带任何前缀,例如“WEB-INF/classes”。您可能会在日志中看到很多有关它的警告。您可以通过将类放入“WEB-INF/lib”中的 jar 中来解决该问题。

请参阅 ProGuard 手册 > 故障排除 > Warning: class file ... unexpectedly contains class ...

关于java - 为什么ProGuard输出的JAR文件中没有class文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62305584/

相关文章:

java - 使用 ProGuard 混淆 GWT Web 应用程序

grails - 为什么 `grails war`每次都会创建不同的WAR?

java - 如果[WEB-INF/lib]和[tomcat/lib]包含类似的JAR会发生什么?

java - Android ProGuard 返回行号

Angular 应用程序部署在 tomcat 上作为 war

java - Visual Studio Code - "Error:spawn jdb ENOENT"尝试调试 java 应用程序

java - 使用 Docker 运行 Gradle IntegrationTest 任务时如何修复 ':integrationTest NO-SOURCE'

java - 使用不带参数的递归进行字符串反转

java - 改变jframe的亮度

android - 当使用空列表和 minifyEnabled true 序列化模型时,Jackson 序列化失败,并抛出 KotlinReflectionInternalError