java - 使用 proguard 混淆 JavaFX 应用程序时出错
问题描述
我对 proguard 不是很熟悉,我想混淆一个 JavaFX 应用程序,我已经做到了,但是现在在对项目进行了一些更改之后,事情就搞砸了。
这是我的 .pro 配置文件:
-injars ../INJAR.jar
-outjars ../OUTJAR.jar
-libraryjars 'rt.jar'
-libraryjars 'jce.jar'
-libraryjars 'jfxrt.jar'
-dontshrink
-dontoptimize
-flattenpackagehierarchy ''
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,*Annotation*,Synthetic,EnclosingMethod
-adaptresourcefilecontents **.fxml,**.properties,META-INF/MANIFEST.MF
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-keep class javax.** { *; }
-keep class impl.** { *; }
-dontwarn impl.**
-keep class org.** { *; }
-dontwarn org.**
-keepclasseswithmembers public class main.Main {
public static void main(java.lang.String[]);
}
-keepclassmembernames class * {
@javafx.fxml.FXML *;
}
-keepclassmembernames class main.*Controller {
public <methods>;
public <fields>;
}
-keepclassmembernames class main.NewApplicationController$Applicant {
public <methods>;
public <fields>;
}
-keepclassmembernames class main.RDVTaker {
public <methods>;
}
-obfuscationdictionary members.txt
-classobfuscationdictionary classes.txt
-printmapping mapping.txt
通过执行命令:
java -jar obf_data/proguard.jar @obf_data/myconfig.pro > obf_data/info.txt
我得到这个错误:
Error: Unexpected error while writing class [oshi/hardware/platform/mac/MacDisks] (Overflow of unsigned short value [70168])
我通过删除选项绕过了上述错误-dontshrink
,但在这种情况下,生成的 jar 会引发以下错误:Error: Invalid or corrupt jarfile OUTJAR.jar
通过同时删除这两个错误-dontshrink
并-dontoptimize
引发另一个错误,将打印一个 stacktarce,但我发现该错误是在此堆栈级别描述的:
Caused by: javafx.fxml.LoadException:
file:/C:/Users/younes/IdeaProjects/vpro/out/artifacts/vpro/OUTJAR.jar.
jar!/main/main.fxml:12
我想知道是否有人有一个假设、想法甚至另一个混淆工具,
提前致谢
解决方案
您的所有 FXML 文件名都应以大写字母开头,因此您需要更新您的字典。
推荐阅读
- amazon-web-services - 当 AWS 自动扩展/缩减实例时,有没有办法保留相同的实例
- java - java.sql.SQLException:在关闭的连接上调用 createStatement()
- react-redux - React / Redux 返回对象不是预期的
- html - CSS Dropdown,不从父级向下对齐
- apache-beam - 如何在 Apache Beam 2.6 中使用 FileIO.writeDynamic() 写入多个输出路径?
- javascript - jQuery复选框选择所有不适用于Chrome
- javascript - 如果条件已验证 angularjs,如何添加 ng-dbclick?
- javascript - 如何在定义符号之前避免 javascript 解析?
- java - 实例化休眠配置引发错误:线程“主”java.lang.NoClassDefFoundError 中的异常:javax/xml/bind/JAXBException
- mongodb - Kubuntu:访问 mongodb?