我有2个库: owls.jar 和 envy.jar 。它们依赖于lib jena.jar ,但是两个不同的,不可编译的版本。羡慕使用旧版本 - jena.jar ,猫头鹰新 - jena2.jar 我想在 glassfish-3.0.1 上运行的Web应用程序中使用它们。我使用 IDEA 11 来部署我的网络应用。
我有这样的目录树:
我添加到 manifest.mf 的嫉妒和猫头鹰libs类路径如下: ../../ lib / envy / jena.jar
我使用 -verbose:class 选项,我总是从 jena.jar 加载类。如果我正在使用或不使用 envy.jar ,我总是从 jena.jar 加载课程。只有当我删除 envy.jar 时才会从 jena2.jar
加载类有没有办法同时使用这两个库?
答案 0 :(得分:0)
使用同一类的2个不同版本的唯一方法是通过2个不同的类加载器来使用它们。那就是你必须用一个类加载器 owls.jar__和__jena.jar 加载 envy.jar 和 jena2.jar 。这个解决方案有其自身的缺陷,您可能应该使用自定义代码,以便在必要时使用另一个类加载器,也许您最终会编写自己的类加载器。
据我所知,这种情况没有内置的解决方案。可能是,使用上面的jar的旧版本更容易,可以支持相同版本的 jena.jar 这是更容易的解决方案。