如何告诉sbt-proguard包含java *.jar



我正在尝试通过proguard插件为sbt 10.*. *.

一切似乎都很好,除了sbt-proguard不包括java jar(在我的情况下mysql-connector-java-5.1.10.jar),因为当我试图运行输出jar与

java -jar proguard-output.min.jar

I'm getting

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
(虽然SBT '运行'很好,所以mysql连接器肯定在项目中)。

我试图通过在build.sbt:

中显式地添加jar来利用这个问题。
proguardInJars += Path.userHome / ".m2" / "repository" / "mysql" / "mysql-connector-java" / "5.1.10" / "mysql-connector-java-5.1.10.jar"

此外在proguard日志:

...  
Preparing output jar  
...  
Copying resources from program jar [/home/kostya/.m2/repository/mysql/mysql-connector-java/5.1.10/mysql-connector-java-5.1.10.jar] (filtered) 
...

但是我仍然得到相同的异常。我做错了什么?

类是在输入中指定的,但是代码只通过自省来实例化它,这是ProGuard无法知道的。因此,您必须显式地指定它必须保留在输出中。

病死率。ProGuard手册>示例>处理数据库驱动程序

病死率。ProGuard手册>故障处理> ClassNotFoundException

更安全的解决方案可能不是像JDBC驱动程序那样处理第三方jar,而是将它们指定为库jar。

相关内容

  • 没有找到相关文章

最新更新