我正在为开源 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/