我有一个需求,我需要在运行时引用我的应用程序中相同JAR的两个不同版本:在某些情况下为fop.jar
(v1.0),在某些其他情况下为fop 1.1.jar
。在运行时使用不同版本的相同JAR
我该如何做到这一点?
我无法动态加载它,因为我的EAR不会在没有这个的情况下被编译。
我有一个需求,我需要在运行时引用我的应用程序中相同JAR的两个不同版本:在某些情况下为fop.jar
(v1.0),在某些其他情况下为fop 1.1.jar
。在运行时使用不同版本的相同JAR
我该如何做到这一点?
我无法动态加载它,因为我的EAR不会在没有这个的情况下被编译。
我刚刚用一种非常黑客的方式解决了这个问题。出于某种原因,我需要pdfbox 1.5和2版本。所以我将.jar文件的所有内容提取到一个临时目录中,然后使用Notepad ++进行搜索并替换文件中的文件。我用urg.apache替换了org.apache,用urg/apache替换了org/apache(搞砸了org.apache.commons然后修复),然后将替换的文件压缩到新的.jar。 安装了它与 到Maven MVN安装:安装文件-Dfile = pdfbux-1.5.0.jar -DgroupId = urg.apache.pdfbox -DartifactId = PDFBOX -Dversion = 1.5.0 -Dpackaging =罐子
在我的pom.xml我有2个依赖项。 1.5版使用urg.apache 在使用1.5我用进口urg.apache代码...
我知道这是一个疯狂的黑客但它救了我很多时间
的关键是:这绝对需要你使用自定义类加载器;以便您的应用程序的一部分与类X v1.0一起运行;另一个使用类X v1.1。这是可能的,但需要*仔细*设计。我宁愿花大脑的力量去想办法**而不是**要求使用两个不同版本的相同JAR。 – GhostCat
感谢您的回复。这是我们正在尝试做的事情,但旧代码库有很多不兼容的xsl,很难在短时间内纠正。我正在寻找一种战术性的解决方案,在不改变旧的xsl的情况下获得成功。 –
而且您认为**使您的旧代码库使用不同的类加载器将会是一个风险较低/耗时的想法?我的直觉是:这可能更难。 – GhostCat