加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何告诉sbt-proguard包含java * .jars?

发布时间:2020-12-16 18:35:09 所属栏目:安全 来源:网络整理
导读:我试图通过 proguard plugin为sbt 10 *制作单个可执行文件* .jar. 所有似乎都没关系,除了sbt-proguard不包括java jars(在我的情况下是mysql-connector-java-5.1.10.jar)因为当我试图运行输出jar时 java -jar proguard-output.min.jar 我越来越 线程“main”
我试图通过 proguard plugin为sbt 10 *制作单个可执行文件* .jar.

所有似乎都没关系,除了sbt-proguard不包括java jars(在我的情况下是mysql-connector-java-5.1.10.jar)因为当我试图运行输出jar时

java -jar proguard-output.min.jar

我越来越

线程“main”中的异常java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
(虽然sbt`run`很好,所以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无法知道.因此,您必须明确指定必须在输出中保留它.

(CFR). ProGuard手册>例子> Processing database drivers

(CFR). ProGuard手册>疑难解答> ClassNotFoundException

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读