我使用的是Zelix KlassMaster评估版,现在出现了反思功能的问题。因为我的程序将加载一个在xml文件中定义的类(例如,com.xxx.xxx.A) ,我定义了 " accessibleByReflection com.xxx.xxx.A; "在ZKM脚本中。但是当我运行我的程序时,它仍然失败了。错误是"由以下引起:java.lang.ClassNotFoundException:com.xxx.xxx.A" 。我想知道我的ZKM脚本是否写得正确或 评估版本不支持反思功能。 那么我如何模糊反射类,同时我的程序可以在混淆后找到新的类名?在类运行时如何以及如何存储和加载映射信息?
我的ZKM脚本如下:
classpath "ZKM.jar"
"/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar"
"/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar"
"/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar"
"/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar"
"/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar"
"classes/obfuscate/*"
"classes/Non_obfuscate/*";
open "/home/xxx/target/classes/*"
"classes/obfuscate/*";
exclude public *.*^ containing {public static main(java.lang.String[])} public static main(java.lang.String[]);
obfuscate changeLogFileIn=""
changeLogFileOut="ChangeLog.txt"
obfuscateFlow=light
exceptionObfuscation=light
encryptStringLiterals=enhanced
mixedCaseClassNames=ifInArchive
aggressiveMethodRenaming=true
collapsePackagesWithDefault=""
localVariables=delete
lineNumbers=delete
autoReflectionHandling=normal
obfuscateReferences=none
obfuscateReferenceStructures=inSpecialClass;
accessedByReflection com.xxx.xxx.A;
saveAll archiveCompression=all "output";