当前位置: 首页 > 知识库问答 >
问题:

使用Websphere和Spring的ClassNotFoundException/NoClassDefoundException

田化
2023-03-14

我有一个EAR/WAR文件,它将部署在Websphere Application Server上。web应用程序使用Spring-Web/WebMVC。spring JAR的完整堆栈被添加到Websphere application server类路径中(通过治理)。因此,我只在这个web应用程序WAR文件的WEB-INF/lib中提供1个jar(castor-1.2.jar)文件,因为只有这个应用程序才需要这个文件。类加载策略设置为parent_last。

spring配置引用deliverd作为WAR文件一部分的类。

1 - Module - com.ibm.ws.classloader.CompoundClassLoader
      file: ... test-ear.ear/test-war.war/WEB-INF/lib/castor-1.2.jar
2 - Module - com.ibm.ws.classloader.CompoundClassLoader
3 - Server-associated - com.ibm.ws.classloader.ExtJarClassLoader
      file: ... clusters/cluster1/custom/classpath/base-lib/spring-webmvc-3.2.9.RELEASE.jar
      ... other spring libraries
4 - ...

我还能做什么(除了冗余地运送与WAR捆绑在一起的spring库--顺便说一句!)来解决这个问题?

这是个例外:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.view.xml.MarshallingView#16799e2d' defined in ServletContext resource [/WEB-INF/castortest-servlet.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org.exolab.castor.mapping.MappingException
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:276)
        ... 81 more
Caused by: java.lang.NoClassDefFoundError: org.exolab.castor.mapping.MappingException
        at java.lang.J9VMInternals.verifyImpl(Native Method)
        at java.lang.J9VMInternals.verify(J9VMInternals.java:93)
        at java.lang.J9VMInternals.prepare(J9VMInternals.java:490)
        at java.lang.Class.getDeclaredConstructors(Class.java:533)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:231)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1002)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:975)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:276)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1417)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1158)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
        ... 83 more
Caused by: java.lang.ClassNotFoundException: org.exolab.castor.mapping.MappingException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
        at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204)
        at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:688)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:667)
        at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:650)
        at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
        at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
        at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:598)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:650)
        ... 97 more

共有1个答案

邓驰
2023-03-14

您需要以下内容:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>

    <!-- Uses Castor for XML -->
    <dependency>
        <groupId>org.codehaus.castor</groupId>
        <artifactId>castor</artifactId>
        <version>1.2</version>
    </dependency>

    <!-- Castor need this -->
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.8.1</version>
    </dependency>

</dependencies>
 类似资料:
  • 我试图在Spring Boot微服务中使用Spring Cloud的特性(例如:Faign或Zipkin客户端)。每当我在pom中引入Spring云依赖时。xml I在启动时出现以下错误: 以下是导致此问题的示例pom.xml。我目前使用Spring Boot 2.0.0。RELEASE和Spring Cloud Finchley。M8。 我做错了什么?我应该切换到另一个版本的Spring Clo

  • 我已经在IBM WebSphere8.5上部署了Ear文件。当我使用我的应用程序时,它给了我一个ClassNotFoundException,但是它给出异常的类在jar文件中,而这个文件已经在ear文件中了。那么,你能告诉我这个问题的原因是什么吗?我们是否需要在websphere中配置一些东西,以便它将这些JAR添加到类路径中?

  • 我目前正在使用Wink 1.1.1和Spring 3.1.2迁移一个Java应用程序从WAS7到WAS8.5.5。我正在尝试使用Wink 8.5中可用的本地Wink集成,而不是使用我们目前在Wink 7中使用的单独Wink罐。 我得到了一个错误的服务器启动,看起来像这样: 原因:java。lang.ClassNotFoundException:org。阿帕奇。眨眼服务器内部的登记处。java上的R

  • 问题内容: 我是Spring JMS和Websphere MQ的新手。任何人都可以给我逐步的过程或示例,以了解如何从Websphere MQ接收消息并能够在控制台中打印该消息吗?非常感谢你的帮助 问题答案: 这是使用Spring MDP / Activation Spec for Websphere MQ的工作示例 mdp-listener.xml web.xml SpringMdp

  • 问题:流输入仅适用于向聚合器发送输出通道输出的1个输入。随后的消息只进入丢弃通道logLateArvers。什么条件被用来发送到丢弃通道? 描述:尝试使用使用WebSphere的聚合器为基本jms移植Spring集成示例。 更新:-打开调试显示轮询器正在工作。消息被拉入并放到MQ,响应被拾取。但是,对于第一组消息之后的MQ场景,不使用AggregatingMessageHandler。消息被发送到

  • 我目前正在使用WebSphere7.0应用服务器上部署的EAR(带有OpenFaces web项目)体验ClassNotFoundException。EAR的部署没有任何问题,但是当我从web项目(包括在EAR中)访问一个页面时,我会得到ClassNotFoundException(如下所示)。我已经导出了EAR以确保所有内容都在那里并且包含了WAR文件。当我查看WAR文件时,未找到的类包含在WE