首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何告诉sbt程序保护程序包含java *.jars?

如何告诉sbt程序保护程序包含java *.jars?
EN

Stack Overflow用户
提问于 2011-09-18 18:29:28
回答 1查看 936关注 0票数 5

我试图通过程序保护插件为sbt 10制作单一的可执行文件。

一切似乎都很好,除了sbt-proguard不包括java jar (在我的例子中是mysql-连接器-java-5.1.10.jar),因为当我试图运行输出jar时

java -jar proguard-output.min.jar

我得到了

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

(虽然sbt run运行良好,所以mysql连接器肯定在项目中)。

我试图利用这个问题,在build.sbt中显式地添加jar:

代码语言:javascript
复制
proguardInJars += Path.userHome / ".m2" / "repository" / "mysql" / "mysql-connector-java" / "5.1.10" / "mysql-connector-java-5.1.10.jar"

此外,在保安日志中:

代码语言:javascript
复制
...  
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) 
...

但我还是得到了同样的例外。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-19 21:13:40

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

CfrProGuard手册>示例> 处理数据库驱动程序

CfrProGuard手册>故障排除> ClassNotFoundException

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7463480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档