gpt4 book ai didi

java - Spring mvc 项目中的 org.springframework.beans.factory.CannotLoadBeanClassException

转载 作者:行者123 更新时间:2023-12-02 11:52:47 24 4
gpt4 key购买 nike

我在创建一个简单的 mvc 项目时遇到了异常。在运行时,框架无法找到我的 Controller 类。下图描述了文件层次结构:

enter image description here

以下是使用的 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

使用了以下文件

index.jsp

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

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

<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

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;
}

}

成功.jsp

${msg}

执行上面的代码后,出现如下错误:

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

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

最佳答案

我运行了您在 qs 中共享的确切代码,并且运行良好。可能是当你编译java类时,它们没有重建成WAR并且war没有你的 Controller 类,这会给出类未找到错误。与xsd定义无关。

关于java - Spring mvc 项目中的 org.springframework.beans.factory.CannotLoadBeanClassException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47777309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com