首页 > 解决方案 > 无法使用 KlassMaster 混淆 jar - Kotlin 问题

问题描述

我有一个 jar,它是使用 java 和 Kotlin 构建的。当我尝试使用 Klass master 并对其进行混淆时,我收到如下错误。顺便说一句,我使用 KlassMaster 来混淆。

致命错误:找不到类“kotlin.jvm.internal.Lambda”。检查类路径选项并重新打开类。(1a)

KlassMaster 脚本看起来像这样:-

print "Obfuscating the Secret File from the Gradle...";

          
unexclude kotlin.jvm.internal.*;

open ".\nexial.jar";

trimExclude *.*^ public static main(java.lang.String[]);
trim;


obfuscate;

saveAll archiveCompression=asIs 
        deleteEmptyDirectories=true 
        deleteXMLComments=false 
        "c:\Temp\Obfuscated.jar";

出了什么问题?我应该在我的机器上安装 kotlin 吗?

标签: javakotlin

解决方案


找不到类 'kotlin.jvm.internal.Lambda' 这是一个类路径问题。Zelix KlassMaster 对在打开这些类时为混淆而打开的类所引用的类、方法和字段进行彻底检查。

在这种情况下,该问题有两种广泛的解决方案。第一个解决方案是将包含 kotlin.jvm.internal.Lambda 的 JAR 添加到您的 ZKM 脚本“classpath”语句(但不是您的“open”语句)。现在你说“我试图混淆的源 jar 已经有适当的 jar”。我建议您检查是否确实如此。发行版通常会忽略其他类引用但未实际使用的类。这些遗漏可能会导致此类问题。

第二种解决方案是在您的 ZKM 脚本“open”语句之前的 ZKM 脚本“ignoreMissingReferences”语句中指定任何“缺失”的类、字段或方法。但是,只有当您确定缺少的类、字段和方法与您的类确实无关时,您才应该使用此语句。有关“ignoreMissingReferences”声明的更多详细信息,请参阅https://www.zelix.com/klassmaster/docs/ignoreMissingReferencesStatement.html


推荐阅读