简体   繁体   English

Spring MVC项目中的org.springframework.beans.factory.CannotLoadBeanClassException

[英]org.springframework.beans.factory.CannotLoadBeanClassException in Spring mvc project

I am messing with an exception creating a simple mvc project. 我搞砸了创建一个简单的mvc项目的异常。 At runtime the framework fails to locate my controller class. 在运行时,框架无法找到我的控制器类。 Following image describes the file hierarchy: 下图描述了文件层次结构:

在此处输入图片说明

Following were the jar files used: 以下是使用的jar文件:

*commons-logging.jar
*org.springframework.asm-3.1.1.RELEASE.jar
*org.springframework.beans-3.1.1.RELEASE.jar
*org.springframework.context-3.1.1.RELEASE.jar
*org.springframework.core-3.1.1.RELEASE.jar
*org.springframework.expression-3.1.1.RELEASE.jar
*org.springframework.web-3.1.1.RELEASE.jar
*org.springframework.web.servlet-3.1.1.RELEASE.jar

Following files were used 使用了以下文件

index.jsp 的index.jsp

<h1>HelloWorld</h1>
<form action="./hello.ds">
    Name:<input type="text" name="name">
         <input type="submit" value="SayHello" />
</form>

web.xml 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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>Spring2_MVC</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <!-- default -->
  <servlet>
    <servlet-name>helloWorld</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>helloWorld</servlet-name>
    <url-pattern>*.ds</url-pattern>
  </servlet-mapping>
</web-app>

helloWorld-servlet.xml 的HelloWorld servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation="http://www.springframework.org/schema/beans      http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
"> 
    <!-- default handler mapping -->
    <!-- Handler -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    <!-- controller -->
    <bean name="/hello.ds" class="controller.HelloController" />
    <!-- View Resolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix" value="/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

HelloController.java HelloController.java

package controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;



public class HelloController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) throws Exception {

        String name = req.getParameter("name");
        Map m = new HashMap();
        m.put("msg","Hello..."+name);
        ModelAndView mav = new ModelAndView("success",m);
        return mav;
    }

}

success.jsp 的success.jsp

${msg}

After executing the code above, I am getting error as follows: 执行上面的代码后,出现以下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping#0' defined in ServletContext resource [/WEB-INF/helloWorld-servlet.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [controller.HelloController] for bean with name '/hello.ds' defined in ServletContext resource [/WEB-INF/helloWorld-servlet.xml]; nested exception is java.lang.ClassNotFoundException: controller.HelloController
Related cause: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [controller.HelloController] for bean with name '/hello.ds' defined in ServletContext resource [/WEB-INF/helloWorld-servlet.xml]; nested exception is java.lang.ClassNotFoundException: controller.HelloController
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1267)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1186)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:858)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [controller.HelloController] for bean with name '/hello.ds' defined in ServletContext resource [/WEB-INF/helloWorld-servlet.xml]; nested exception is java.lang.ClassNotFoundException: controller.HelloController

Detailed error stack is available here : https://drive.google.com/open?id=1gKqBvleeEATU_1SmWaW6O4QO4rwAuwp4 可在此处找到详细的错误堆栈: https : //drive.google.com/open?id=1gKqBvleeEATU_1SmWaW6O4QO4rwAuwp4

I ran your exact code which you shared in your qs and its working fine. 我运行了您在qs中共享的确切代码,并且运行正常。 May be when you compiled the java classes, they were not rebuild into a WAR and war did not have your controller class which was giving the class not found error. 可能是当您编译Java类时,它们没有重新构建为WAR,并且war没有您的控制器类,从而给该类未找到错误。 It has nothing to do with xsd definition. 它与xsd定义无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Spring异常处理:org.springframework.beans.factory.CannotLoadBeanClassException - Spring Exception Handling : org.springframework.beans.factory.CannotLoadBeanClassException org.springframework.beans.factory.CannotLoadBeanClassException - org.springframework.beans.factory.CannotLoadBeanClassException org.springframework.beans.factory.CannotLoadBeanClassException:找不到类 - org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class 异常org.springframework.beans.factory.CannotLoadBeanClassException:找不到类 - Exception org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class Tomcat提供了org.springframework.beans.factory.CannotLoadBeanClassException: - Tomcat gives org.springframework.beans.factory.CannotLoadBeanClassException: org.springframework.beans.factory.CannotLoadBeanClassException:找不到类 - org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class 集成jsf和spring异常:org.springframework.beans.factory.CannotLoadBeanClassException:找不到类 - integration jsf and spring Exception : org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class org.springframework.beans.factory.CannotLoadBeanClassException:找不到类[org.springframework.orm.hibernate5.HibernateTrasactionManager] - org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.orm.hibernate5.HibernateTrasactionManager] “ org.springframework.beans.factory.CannotLoadBeanClassException:找不到类[org.springframework.jdbc.datasource - " org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.jdbc.datasource Spring/Java org.springframework.beans.factory.CannotLoadBeanClassException: 找不到类 [C:\\launchCodeFiles\\src\\main\\java\\RunMario.java] - Spring/Java org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [C:\launchCodeFiles\src\main\java\RunMario.java]
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM