java - 在 Java 程序中包含第三方 jar 文件的最佳做法是什么?

标签 java jar dependencies classpath packaging

我有一个程序需要几个第三方库,目前它是这样打包的:

zerobot.jar (my file)
libs/pircbot.jar
libs/mysql-connector-java-5.1.10-bin.jar
libs/c3p0-0.9.1.2.jar

据我所知,处理第三方库的“最佳”方法是将它们放在我的 jar 文件 list 中的类路径中,这将跨平台工作,不会减慢启动速度(捆绑他们可能)并且不会遇到法律问题(重新包装可能)。

问题出在自己提供第三方库的用户(示例用例,升级它们以修复错误)。其中两个库在文件中有版本号,这增加了麻烦。

我目前的解决方案是我的程序有一个引导过程,它创建一个新的类加载器并正确使用它实例化程序。此自定义类加载器将 lib/中的所有 .jar 文件添加到其类路径中。

我目前的方法工作正常,但我现在在我的应用程序中有两个自定义类加载器,最近对代码的更改导致了难以调试的问题,所以如果有更好的方法我想消除这种复杂性.对于我确信非常普遍的情况,这似乎也像是过度设计。

所以我的问题是,我应该怎么做?

最佳答案

我们在 jar 中提供脚本文件。例如。 some.bat, some.sh 等

并且从 Java6 开始,您可以使用通配符来指定类路径。

这里有一篇很好的文章解释了这种方法:https://blogs.oracle.com/mr/entry/class_path_wildcards_in_mustang

关于java - 在 Java 程序中包含第三方 jar 文件的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437174/

相关文章:

java - 如何模拟更改实例属性状态的 void 方法

java - log4j.xml中的参数值解释

java - 如何从谷歌驱动器读取大文件到 gae blobstore

jar - 在Android Studio中导入外部jar文件---NoClassDefFoundError

java - Tomcat7 Spring Maven Mysql 对于类型 avax/el/ExpressionFactory 有不同的 Class 对象;

java - 导入 Maven 插件

r - 在不安装包的情况下列出 R 包依赖项

java - Web 应用程序基于数据库数据返回 XML 文档的最佳方式(由 VXML 使用)?

java - 运行外部 JUnit Jar 的 Spring 导致 java.lang.Exception : No runnable methods

r - 正确使用可选包功能和依赖项