tomcat项目移植到weblogic,启动报错啊,怎么解决啊,高手帮忙看看啊。。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat项目移植到weblogic,启动报错啊,怎么解决啊,高手帮忙看看啊。。。相关的知识,希望对你有一定的参考价值。

<2014-12-1 下午06时10分01秒 CST> <Warning> <HTTP> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'workflowservice': Invocation of init method failed; nested exception is java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "com.sun.xml.bind.DatatypeConverterImpl.printQName(Ljavax/xml/namespace/QName;Ljavax/xml/namespace/NamespaceContext;)Ljava/lang/String;" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) of the current class, com/sun/xml/bind/DatatypeConverterImpl, and the class loader (instance of <bootloader>) for interface javax/xml/bind/DatatypeConverterInterface have different Class objects for the type javax/xml/namespace/QName used in the signature.

只要复制你的 jar 和 Spring 必须的 jar,不要复制那些服务器已经有的 jar 包。像 xcml 处理的 jar 服务器自带了,把它们从你的程序中删除掉。你的程序在 tomcat 上正常但 JBoss 上不正常是因为 Tomcat 只是一个“只打算支持 servlet/jsp 的 web profile 的容器” 而 JBoss 是一个完整的支持 Jsp/Servlet 和 EJB 的 full profile 的 J2EE 服务器,所以 JBoss 自带了很多 tomcat 没有的 API,而你的程序多带了一份重复的东西。


    一般你从 Spring 网站下载这些 jar 时它会把 jar 分类两类,一个是自己的 jar ,另一个是可选的第3方 jar。


   你这个错误是在说,你的程序所在的 class loader 中发现了一个类,在服务器的 class loader 也发现了另一个同名的类(包名也相同),这是个错误。 

   Java 中即使名字和包名完全相同但 classloader 不相同的话也是被看作不同的类型,把它们互相赋值时依然会得到 ClassCastException 的,而在反射调用时则是 InvocationTargetException 。

    class loader 在 Java 中是树型结构的,在父子关系的层次中的两个节点中出现完全同名的类在绝大多数情况下都是一个配置错误,但同级的兄弟节点中可以出现同名的类。


    在 J2EE 开发中,我们只添加自己必须用的 jar,而对于 J2EE API 的话,我们用的是接口和 API 类,具体的实现类由服务器来提供,这些类我们不应该自己复制一份。这一点就是 J2EE 开发和 J2SE 开发不同的地方。


    要想使用 J2EE API 的话,应该这样添加库,而不应该去复制 jar 库在项目目录下,更不能在部署程序时把它们又复制到服务器上去,因为服务器已经有这些东西了。

     可能你只需要一个 Spring.jar 就足够了,像图片中一样先把 JBoss Server 添加到类 Java Build Path 中,然后尝试从最少的一个 Spring.jar 开始,如果它提示少了不能编译再逐渐增加少了的  jar 包,这样你就知道你的程序最少需要哪几个 jar 才能跑起来:

参考技术A weblogic和tomcat使用了不同的jdk,所以出问题了。

以上是关于tomcat项目移植到weblogic,启动报错啊,怎么解决啊,高手帮忙看看啊。。。的主要内容,如果未能解决你的问题,请参考以下文章

把项目从tomcat5.5移植到weblogic10的问题。

Tomcat项目移植到Weblogic的问题

项目从tomcat6放到weblogic11g上,启动报错

Struts2升级2.5.16,Tomcat运行正常部署Weblogic报错

windows 7本地安装的weblogic,部署项目启动报错。

我的web项目在 TOmcat 下能正常运行,换到Weblogic 下 报错,