java - apache commons 的两个版本 - 使用特定的一个

标签 java

我正在为开源 ETL 实用程序(Pentaho 数据集成)编写 FTP 客户端插件。 PDI 默认使用旧版本的 Apache commons NET jar,我需要新版本提供的功能。

我不想用新 JAR 替换旧 JAR 来影响 Pentaho 中的所有内容。我是否可以将它们放在一起,然后告诉我的新代码专门从我添加的新 JAR 中导入?

最佳答案

您无法通过插件代码本身来做到这一点。仅当插件加载到不同的类加载器中时,您才能执行此操作,需要将其配置为从您自己的 apache commons jar 加载类,然后再转到父类加载器。

大多数应用程序服务器都是这样做的:您可以添加一个 lib 文件夹,您的代码将在应用程序服务器自己的库之前使用该文件夹。

其他应用程序服务器支持 OSGi,它允许您部署同一库的多个版本,前提是它们具有正确的 MANIFEST.MF 文件。在这种情况下,您可以在自己的 MANIFEST.MF 文件中指定所需的版本。

Pentaho Kettle 显然支持 OSGi 插件。

关于java - apache commons 的两个版本 - 使用特定的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12693102/

相关文章:

java - 行为类似于@Entity 和@Embeddable 的类

java - 如何使用矩形之间的相交进行碰撞检查?

java - 应用小工具 : Ripple effect lost on list item when background is added to outer layout

Java获得用户的读、写、删除权限?

java - 模拟类的所有实例

java - 如果有两个JVM 启动,如何调试applet?

java - 删除表已解决,但如何干净地删除呢?

java - 使用方法时 Arraylist 不会保留数据

java - Web 服务中每个用户的全局变量

Javamail Gmail 和 OAuth2