gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:53:26 25 4
gpt4 key购买 nike

我正在尝试通过 proguard plugin 制作单个可执行文件 *.jar对于 sbt 10.*。

一切似乎都还好,除了当我尝试使用
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"

此外在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)
...

但我仍然遇到同样的异常(exception)。我究竟做错了什么?

最佳答案

该类是在输入中指定的,但代码只是通过自省(introspection)来实例化它,ProGuard 无法知道。因此,您必须明确指定它必须保留在输出中。

参照。 ProGuard 手册 > 示例 > Processing database drivers

参照。 ProGuard 手册 > 故障排除 > ClassNotFoundException

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

关于scala - 如何告诉 sbt-proguard 包含 java *.jars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7463480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com