我试图通过程序保护插件为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:
proguardInJars += Path.userHome / ".m2" / "repository" / "mysql" / "mysql-connector-java" / "5.1.10" / "mysql-connector-java-5.1.10.jar"此外,在保安日志中:
...
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)
...但我还是得到了同样的例外。我做错了什么?
发布于 2011-09-19 21:13:40
类是在输入中指定的,但是代码只通过内省来实例化它,ProGuard无法知道这一点。因此,您必须显式地指定必须在输出中保留它。
CfrProGuard手册>示例> 处理数据库驱动程序
CfrProGuard手册>故障排除> ClassNotFoundException
更安全的解决方案可能不是像JDBC驱动程序那样处理第三方jars,而是将它们指定为库jars。
https://stackoverflow.com/questions/7463480
复制相似问题