我正在外部化资源适配器rar。

先前,rar打包在war / lib中,并且一切正常。现在,为了使战争轻而易懂,我想将资源适配器外部化。

我做了什么

Removed rars from war
installed rar externally through WAS7.0 Admin console
configured J2C connection factories for each RAR


我做了一个干净的重新启动,并得到了一些ClassNotFoundErrors。

为什么出现这些错误:
基本上,rars使用/ lib中存在的一些jar。所以以前没有问题,但是现在当我将其外部化时,我开始使用CNFE`s。

我如何解决:
当我们通过WAS管理控制台安装rar时,有一个提供类路径的选项。我在那里提供了引起类路径问题的罐子。我可以部署并启动我的应用程序

问题:

当我登录到我的应用程序时。其中一个jar中有一行代码(这引起了问题,并被添加到资源适配器的类路径中,请注意,当前这在war中以及资源适配器的类路径中都存在),正在执行类型转换。
现在在此声明

我有一个例外

java.lang.ClassCastException: com.csc.fs.ra.SimpleMappedRecord incompatible with com.csc.fs.ra.SimpleMappedRecord


我挖了一下,发现可能的原因是同一罐子的多个版本。我的情况就是这样。
我在战争库中以及资源适配器的类路径中都有一个jar版本。

我在这里有点想法。如何解决这种情况。请帮忙

问候

最佳答案

即使您使用相同版本的jar,RAR和WAR都有自己的ClassLoader,它们中的每一个都分别加载该类,并获得ClassCastException。

在嵌入之前,它可以工作是因为RAR使用了相同的ClassLoader。

如果RAR现在是分开的,我想您将必须将jars放在共享库中,这样它将由单个ClassLoader加载。

关于java - 外部化资源适配器给定:java.lang.ClassCastException someclass与someclass不兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12800178/

10-10 17:08