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

Why are there no class files in the JAR file outputted by ProGuard?

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

具体来说...我有一个 Java/Spring 网络应用程序。所以我制作了一个 WAR 文件。

我已经将 classes 从 WAR 文件的 /WEB-INF/classes 文件夹复制到一个新的 JAR 文件中。

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

我接受 ProGuard GUI 中的所有默认设置,当我在最后一页上单击 "Process!" 时,它会进行处理...有一个 "duplicate definition of library class" 注释列表(我是很确定我可以忽略?)。

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

我的 Web 应用程序的

None 个 class 文件在输出 JAR 文件中。

我错过了什么?

ProGuard 期望输入 classes 的文件名与其完全限定的 class 名称相对应,没有任何前缀,如 "WEB-INF/classes"。您可能会在日志中看到很多关于它的警告。您可以通过将 classes 放入 "WEB-INF/lib".

中的罐子中来解决它

参见 ProGuard 手册 > 疑难解答 > Warning: class file ... unexpectedly contains class ...