【问题标题】:Jboss6.1 ClassNotFound in WEB/lib for listenerJboss 6.1 Class Not Found in WEB/lib for listener
【发布时间】:2012-10-07 05:23:31
【问题描述】:

我使用 jboss6.1。当我尝试部署 web 应用程序时,它说尝试加载 spring 时找不到类。

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

错误是

Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationListener

我把弹簧放在WEB/lib 中。那是错的吗?还是应该是别的?


感谢您的友好回复。让我感到困惑的是,我将弹簧罐放在了我的 webapp 的 WEB/lib 文件夹中。这还不够吗?


以下是 web.xml 和 jars。 (我把抓到的都放在spring3.1的dist文件夹中)

但我想知道可能是因为我使用 jboss 并且其中有一些特别之处?我谷歌了一些帖子类加载器,但不明白。


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="CMDB_WS_HOST" version="3.0">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <session-config>
        <session-timeout>99999999</session-timeout>
    </session-config>
    <context-param> 
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/beans.xml</param-value>
    </context-param>
    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>com.inspur.cmdb.system.StartupListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

web/lib 中的弹簧罐

org.springframework.aop-3.1.0.M2.jar

org.springframework.asm-3.1.0.M2.jar

org.springframework.aspects-3.1.0.M2.jar

org.springframework.beans-3.1.0.M2.jar

org.springframework.context.support-3.1.0.M2.jar

org.springframework.context-3.1.0.M2.jar

org.springframework.core-3.1.0.M2.jar

org.springframework.expression-3.1.0.M2.jar

org.springframework.instrument.tomcat-3.1.0.M2.jar

org.springframework.instrument-3.1.0.M2.jar

org.springframework.jdbc-3.1.0.M2.jar

org.springframework.jms-3.1.0.M2.jar

org.springframework.orm-3.1.0.M2.jar

org.springframework.oxm-3.1.0.M2.jar

org.springframework.test-3.1.0.M2.jar

org.springframework.transaction-3.1.0.M2.jar

org.springframework.web.portlet-3.1.0.M2.jar

org.springframework.web.servlet-3.1.0.M2.jar

org.springframework.web.struts-3.1.0.M2.jar

org.springframework.web-3.1.0.M2.jar

【问题讨论】:

  • 您使用的是哪个版本的 Spring?你可以在你的类路径中发布这些 jar 包吗?

标签: spring jakarta-ee jboss


【解决方案1】:

确保您的服务器类路径已包含 Spring jar 库。在 Spring 3 中,spring-web.jar

检查WEB/lib中是否有这些jar

commons-logging-1.1.1.jar
jstl-1.2.jar
spring-asm-3.0.3.RELEASE.jar
spring-beans-3.0.3.RELEASE.jar
spring-context-3.0.3.RELEASE.jar
spring-core-3.0.3.RELEASE.jar
spring-expression-3.0.3.RELEASE.jar
spring-web-3.0.3.RELEASE.jar
spring-webmvc-3.0.3.RELEASE.jar

【讨论】:

  • 好吧,这让我很困惑。我将弹簧罐放在我的 webapp 的 WEB/lib 文件夹中。这还不够吗?
  • 没关系。请列出其中的所有 jars 并发布 web.xml 配置
  • 如果你没有发布你在web.xml中完全配置的东西,没有人能说你哪里出错了
  • 谢谢@Swarnajith。我更新了我的问题。我试过如果我把罐子放在 jboss6.1/server/default/lib 中,那么它可以找到它们并且没有抛出异常。只有我放在 webapp/WEB-INF/lib 下才会抛出异常。顺便说一句,我正在使用 eclipse3.7/JbossAs 工具来运行我的应用程序。
  • 你不需要将 jars 放入“jboss6.1/server/default/lib”
【解决方案2】:

JBoss 7没问题,就是classloading效果。

配置:/WEB-INF/jboss-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
    "-//JBoss//DTD Web Application 4.2//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
    <class-loading java2ClassLoadingCompliance="false">
        <loader-repository>
                   myapp:loader=anyUniqueName
            <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
        </loader-repository>
    </class-loading>
</jboss-web>

否则

我参考here

我还没有尝试过JBoss 6。但是,我希望以下配置对JBoss 6 有所帮助。

注意:

在 JBoss 6.0 上,为避免容器在应用程序实际启动之前加载类,需要将 WEB-INF/jboss-scanning.xml 文件添加到应用程序存档中 - 具有以下内容:

配置:/WEB-INF/jboss-scanning.xml

<scanning xmlns="urn:jboss:scanning:1.0"/>

【讨论】:

  • @GaryX,请再次修改答案。
  • 谢谢。我认为它很接近。我试过了,还是没有运气。稍后我会深入研究。
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
相关资源
最近更新 更多