0

我使用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 中的 spring jars

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

4

2 回答 2

0

确保您的服务器类路径已包含 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
于 2012-10-17T19:20:18.240 回答
0

没关系。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>

否则

在这里参考。

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

笔记:

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

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

<scanning xmlns="urn:jboss:scanning:1.0"/>
于 2012-10-18T05:55:46.297 回答