微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Java程序中包含第三方jar文件的最佳实践是什么?

我有一个需要几个第三方库的程序,目前它的打包方式如下:
zerobot.jar (my file)
libs/pircbot.jar
libs/mysql-connector-java-5.1.10-bin.jar
libs/c3p0-0.9.1.2.jar

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

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

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

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

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

解决方法

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

从Java6开始,您可以使用通配符指定类路径.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


应用场景 C端用户提交工单、工单创建完成之后、会发布一条工单创建完成的消息事件(异步消息)、MQ消费者收到消息之后、会通知各处理器处理该消息、各处理器处理完后都会发布一条将该工单写入搜索引擎的消息、最终该工单出现在搜索引擎、被工单处理人检索和处理。 事故异常体现 1、异常体现 从工单的流转记录发现、
线程类,设置有一个公共资源 package cn.org.chris.concurrent; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @Descrip
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量
Java 9中JShell中的不同启动脚本是什么?
使用Java的位填充错误检测技术
java中string是什么
如何使用Java中的JSON-lib API将Map转换为JSON对象?