我正在使用WebSphere应用服务器。在这一点上,我得到了一个错误,即:
com.savvion.sbm.dms.svo.Document incompatible with com.savvion.sbm.dms.svo.Document.我在网上搜索,发现在java中,不同的类加载器所造成的错误原因是相同的类加载。
如何使用不同的类加载器防止类加载。或者其他的解决方案。
发布于 2015-03-19 10:56:51
您的问题代码可能如下所示:
Document d = (Document)object;其中"object“是加载在(自定义?)上的文档类的实例。类加载器,而该类中引用的文档类(即"d“的声明和强制转换中的文档类)被加载到线程的上下文类加载器上。
因此,正如您提到的,VM将这些看作是两个不同的类,即使字节码完全相同:
如果两个类由同一个类加载器加载(§2.17.2),并且具有相同的完全限定名(§2.7.5),则两个类是相同的类(因此也是相同的类型)。
http://docs.oracle.com/javase/specs/jvms/se6/html/Concepts.doc.html#20389
问题的解决方案取决于如何构造和部署特定的应用程序,这可能并不简单。第一步是查看两个类是从哪里加载的。将"-verbose:class“添加到Java命令行参数中产生的输出应该显示类驻留在哪个JAR文件中。
https://stackoverflow.com/questions/29142234
复制相似问题