【问题标题】:How to shrink scala swing library using Proguard?如何使用 Proguard 缩小 scala swing 库?
【发布时间】:2011-12-08 18:11:43
【问题描述】:

我尝试使用 Proguard 缩小和混淆我的 Scala/Java 程序。当我只使用 scala-library.jar 时,一切都很好,但是当我将 scala-swing.jar 添加到我的 jar 中时,我得到以下信息:

Warning: scala.swing.ComboBox: can't find referenced class scala.swing.ComboBox$selection
Warning: scala.swing.ListView: can't find referenced class scala.swing.ListView$selection
Warning: scala.swing.ListView$selection$: can't find referenced class scala.swing.ListView$selection$indices
Warning: scala.swing.ListView$selection$: can't find referenced class scala.swing.ListView$selection$items
Warning: scala.swing.ListView$selection$$anon$7: can't find referenced class scala.swing.ListView$selection
Warning: scala.swing.ListView$selection$Indices: can't find referenced class scala.swing.ListView$selection
Warning: scala.swing.ListView$selection$indices$: can't find referenced class scala.swing.ListView$selection$indices
Warning: scala.swing.ListView$selection$indices$: can't find referenced class scala.swing.ListView$selection$indices
Warning: scala.swing.ListView$selection$indices$: can't find referenced class scala.swing.ListView$selection
Warning: scala.swing.ListView$selection$items$: can't find referenced class scala.swing.ListView$selection

如果我查看 jar,我发现确实没有这样的文件 - 有 scala.swing.ComboBox$selection$.class 而不是 scala.swing.ComboBox$selection.class。手动重命名并不能解决问题 - 然后它会抱怨文件包含具有不同名称的类。

那么,这些是 scala-swing.jar 中的非法引用吗?还是 Proguard 中的错误?

您能提出解决方法吗?

编辑:我正在使用 Scala 2.9.0.1 和 Proguard 4.6

EDIT2:使用 Scala 2.9.1.final jar 没有帮助。

【问题讨论】:

标签: java scala obfuscation proguard


【解决方案1】:

这看起来像是 scala 编译器中的一个错误。例如,类文件 scala/swing/ComboBox.class 包含以下方法:

public final scala.swing.ComboBox$selection$ selection()

在内部,方法签名表示如下:

()Lscala/swing/ComboBox$selection$;

看起来不错。但是,该方法还有一个 Signature 属性来跟踪已擦除的泛型:

()Lscala/swing/ComboBox<TA;>.selection;

如您所见,签名末尾缺少一个 $。在 ProGuard 中,您可以通过指定来解决问题

-dontwarn scala.swing.**

【讨论】:

  • 是的,这正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多