我试图让 Proguard 混淆一个简单的 .war 文件。根据文档 Proguard 处理 .war 文件,但是当我尝试时我得到这个:
Warning: class [WEB-INF/classes/com/corp/gr/t2b/T2BChannel.class] unexpectedly contains class [com.corp.gr.t2b.T2BChannel]
文档提到 Proguard 不喜欢 WEB-INF/classes 目录中包含类的 .war 文件。所以我将所有 .class 文件放在 WEB-INF/lib 中它们自己的 .jar 文件中。
然后 Proguard 抱怨它找不到任何 JavaEE 6 类,即使我已经给它 javaee.jar 文件
-libraryjars C:/bin/glassfish-3.0.1/.../lib/javaee.jar
因此,我解析出 javaee.jar 文件 MANIFEST.MF 中的所有条目,并为每个条目添加多个
-libraryjars C:/bin/glassfish-3.0.1/.../modules/javax.servlet.jar
声明。
Proguard 表明它正在读取各种库 jar,然后滚动数千条“库类的重复定义”消息和一些其他消息。 (消息不会被记录,因此它们只是滚动离开屏幕。)在所有这些消息的末尾,它以
Note: there were 965 duplicate class definitions.
Warning: there were 816 classes in incorrectly named files.
还有数百个(或数千个 - 我无法分辨,因为这些无法重定向到文件)以下形式的警告
Warning: class [1.0/org/apache/xml/resolver/tools/ResolvingXMLReader.class] unex
pectedly contains class [org.apache.xml.resolver.tools.ResolvingXMLReader]
所以 Proguard 似乎无法处理 JavaEE 6 库。
有人让 Proguard 来使用 JavaEE 6 应用程序吗?您需要做什么才能使其与 JavaEE 6 库一起工作?