Proguard 在 Scala 代码上崩溃,具体取决于 Multiverse STM
Posted
技术标签:
【中文标题】Proguard 在 Scala 代码上崩溃,具体取决于 Multiverse STM【英文标题】:Proguard crashes on Scala code depending on Multiverse STM 【发布时间】:2011-12-25 18:33:59 【问题描述】:我正在尝试使用 Proguard 优化一些依赖于 Multiverse STM (0.6.2) 的 Scala 代码。我将 STM 与 akka 结合使用。当我尝试这样做时,我收到以下错误:
Unexpected error while inlining subroutines:
Class = [org/multiverse/transactional/refs/BasicRef]
Method = [<init>()V]
Exception = [java.lang.ArrayIndexOutOfBoundsException] (-1)
我正在使用以下标志进行优化:
-forceprocessing
-libraryjars $java.home/lib/rt.jar
-injars $jar.name
-outjars $jar.opt.name
-dontobfuscate
-dontnote
-dontwarn
-ignorewarnings
-keepattributes
-keepclasseswithmembers public class *
public static void main(java.lang.String[]);
你知道解决这个问题的方法吗(除了明显的 -dontoptimize 之外)?
提前致谢!
【问题讨论】:
【参考方案1】:在尝试解决同样的问题时,在 proguard 上浪费了更多时间后,我切换到一个罐子 (https://github.com/retronym/sbt-onejar) 并且第一次使用它。我建议除非你需要从 proguard 获得特定的东西(收缩、字节码混淆),否则只使用一个罐子。
每当我必须配置 proguard 时,我都会发现自己陷入了一场战斗。通常在配置 sbt 时,我也发现自己陷入了一场战斗。把它们放在一起,那就麻烦了。
祝你好运。 -安迪
【讨论】:
以上是关于Proguard 在 Scala 代码上崩溃,具体取决于 Multiverse STM的主要内容,如果未能解决你的问题,请参考以下文章
使用 Scala 编写的库在 Android 应用上运行 Proguard
将scala代码打包到一个jar文件中,proguard不起作用
尝试使用 ProGuard 优化 Java+Scala 时出现 java.lang.***Error