У меня также была такая же проблема, когда мой барабанный барабанный файл был толстым банком из сборки плагинов через команду sbt assembly
. Решение этой проблемы заключается не в использовании толстой банки, а в использовании классов, созданных из scala, и других библиотек java/scala для получения сжатого jar-файла.
На моем mac (OS X 10.10) у меня есть этот файл proguard (с именем your.pro).
-injar classes
-injar /usr/local/Cellar/scala/2.11.5/libexec/lib/scala-library.jar(!META-INF/MANIFEST.MF)
-outjar main.jar
-libraryjar /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Classes/classes.jar
-dontwarn
-dontnote
-ignorewarnings
-optimizationpasses 2
-optimizations !code/allocation/variable
-keep,allowoptimization,allowshrinking class * { *; }
-keepattributes SourceFile,LineNumberTable
-keepclasseswithmembers public class * { public static void main(java.lang.String[]); }
Это структура каталогов.
.
├── classes
│ ├── HelloWorld$.class
│ ├── HelloWorld$delayedInit$body.class
│ ├── HelloWorld.class
│ └── META-INF
│ └── MANIFEST.MF
├── src
│ └── hello.scala
└── your.pro
hello.scala выглядит следующим образом:
object HelloWorld extends App
{
println("Hello, world")
}
Вы можете получить файлы классов в каталоге классов с scalac src/hello.scala -d classes
. Файл MANIFEST должен быть добавлен, чтобы указать, что является основным классом. Осторожно с последней пустой строкой.
Manifest-Version: 1.0
Main-Class: HelloWorld
... blank line should be here ...
Файл классов генерируется из scala. С proguard @your.pro
я мог бы получить рабочий файл jar.
Я загрузил пример https://dl.dropboxusercontent.com/u/10773282/share/2015/scala_class.zip
Я тоже попал в эту проблему. Я новичок в Proguard – harschware