GVKun编程网logo

org.springframework.beans.factory.CannotLoadBeanClassException:找不到类(spring 找不到或无法加载主类)

18

本文将分享org.springframework.beans.factory.CannotLoadBeanClassException:找不到类的详细内容,并且还将对spring找不到或无法加载主类进

本文将分享org.springframework.beans.factory.CannotLoadBeanClassException:找不到类的详细内容,并且还将对spring 找不到或无法加载主类进行详尽解释,此外,我们还将为大家带来关于Bean实例化报错org.springframework.beans.factory.BeanCreationException、Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name...、Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException、org.springframework.beans.factory.BeanCreationExce的相关知识,希望对你有所帮助。

本文目录一览:

org.springframework.beans.factory.CannotLoadBeanClassException:找不到类(spring 找不到或无法加载主类)

org.springframework.beans.factory.CannotLoadBeanClassException:找不到类(spring 找不到或无法加载主类)

我从tomcat 6.0安装目录中的servle-api.com替换了j2ee.jar:并产生以下错误。我目前正在尝试找出原因。可能是什么问题。

我在配置文件中定义了一个bean: Sempedia-service.xml,如下所示

<beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">    <bean id="sempediaSearchService"/></beans>

我的 web.xml 指定了以下bean:

<context-param>    <param-name>contextConfigLocation</param-name>    <param-value>/WEB-INF/Sempedia-service.xml,/WEB-INF/Sempedia-persistence.xml</param-value></context-param><listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

堆栈跟踪

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.service.SempediaSearchManager] for bean with name ''sempediaSearchService'' defined in ServletContext resource [/WEB-INF/Sempedia-service.xml]; nested exception is java.lang.ClassNotFoundException: com.service.SempediaSearchManager    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1141)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524)    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177)    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:758)    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:422)    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)    at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)    at org.apache.catalina.core.StandardService.start(StandardService.java:516)    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)    at org.apache.catalina.startup.Catalina.start(Catalina.java:583)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)    at java.lang.reflect.Method.invoke(Unknown Source)    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)Caused by: java.lang.ClassNotFoundException: com.service.SempediaSearchManager    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)    at org.springframework.util.ClassUtils.forName(ClassUtils.java:211)    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)    ... 24 more

答案1

小编典典

问题在于com.service.SempediaSearchManager您的Web应用程序的类路径中没有调用任何类。最可能的根本原因是:

  • 完全合格的类名在中不正确/WEB-INF/Sempedia-service.xml;即类名是别的,

  • 该类不在Webapp的/WEB-INF/classes目录树中,也不在目录中的JAR文件中/WEB-INF/lib

编辑
:我能想到的唯一的另一件事是,这ClassDefNotFoundException实际上可能是较早的类加载/静态初始化问题的结果。检查日志文件中的
第一个 堆栈跟踪,并查看嵌套异常,即“ caused”链。[如果类加载一次失败,并且您或Spring
Class.forName()由于某种原因再次调用,那么Java实际上不会尝试第二次加载。相反,您将获得一个ClassDefNotFoundException堆栈跟踪,该跟踪不能解释原始故障的真正原因。]

如果您仍然感到困惑,则应该将Eclipse排除在外。以最终将要部署的格式创建WAR文件,然后从命令行进行创建:

  1. 手动关闭Tomcat

  2. 清理您的Tomcat webapp目录,

  3. 将WAR文件复制到webapp目录中,

  4. 启动Tomcat。

如果那不能直接解决问题,请查看Tomcat上已部署的webapp目录,以确认“ missing”类在正确的位置。

Bean实例化报错org.springframework.beans.factory.BeanCreationException

Bean实例化报错org.springframework.beans.factory.BeanCreationException

近日在使用Spring boot 2.0.0.RELEASE 运行时,抛出了bean注入异常

代码如下:

@Bean
public FilterRegistrationBean httpFilter(){
   FilterRegistrationBean registrationBean = new FilterRegistrationBean();
   registrationBean.setFilter(new HttpFilter());
   registrationBean.addUrlPatterns("/threadLocal/*");
   return registrationBean;
}

报错信息大致如下:

2018-03-31 14:00:30.356 ERROR 18536 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''httpFilter'' defined in com.mmall.concurrency.ConcurrencyApplication: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.FilterRegistrationBean]: Factory method ''httpFilter'' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/servlet/Filter
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587) ~[spring-beans-5.0.4.RELEASE.jar:5.0.4.RELEASE]

..........
 

查看pom文件,找到是内置的tomcat的jar所引起的冲突报错

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</scope>
</dependency>

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name...

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name...

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''requestMappingHandlerMapping'' defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping found. Cannot map ''portDetailController'' bean method
public java.util.List<cn.kkou.creditsys.back.dto.portdetail.PortStat> cn.kkou.creditsys.back.web.controller.portdetail.PortDetailController.getPorts()
to {[/port/port],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already ''portDetailController'' bean method
public java.util.List<cn.kkou.creditsys.back.dto.stat.AreaStat> cn.kkou.creditsys.back.web.controller.portdetail.PortDetailController.orderByPort(java.lang.String) mapped.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1554) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1021) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
29-May-2018 14:27:44.987 严重 [RMI TCP Connection (3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:916) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:862) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:811) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:739) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
... 68 common frames omitted
29-May-2018 14:27:44.988 严重 [RMI TCP Connection (3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors
Caused by: java.lang.IllegalStateException: Ambiguous mapping found. Cannot map ''portDetailController'' bean method
public java.util.List<cn.kkou.creditsys.back.dto.portdetail.PortStat> cn.kkou.creditsys.back.web.controller.portdetail.PortDetailController.getPorts()
to {[/port/port],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already ''portDetailController'' bean method
public java.util.List<cn.kkou.creditsys.back.dto.stat.AreaStat> cn.kkou.creditsys.back.web.controller.portdetail.PortDetailController.orderByPort(java.lang.String) mapped.
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:192) ~[spring-webmvc-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:164) ~[spring-webmvc-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:124) ~[spring-webmvc-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:103) ~[spring-webmvc-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:126) ~[spring-webmvc-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550) ~[spring-beans-4.0.8.RELEASE.jar:4.0.8.RELEASE]
... 79 common frames omitted
[2018-05-29 02:27:45,026] Artifact back-web:war: Error during artifact deployment. See server log for details.

 

 

报错原因:controller 中有两个相同的 requestMapping

Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException

Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException

Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name ''servletEndpointRegistrar'' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method ''servletEndpointRegistrar'' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ''healthEndpoint'' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Unsatisfied dependency expressed through method ''healthEndpoint'' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''healthIndicatorRegistry'' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.health.HealthIndicatorRegistry]: Factory method ''healthIndicatorRegistry'' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ''org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorAutoConfiguration'': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''dataSource'' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method ''dataSource'' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

 

 

这是什么原因造成的呢?

我自己摸索了很久发现,该项目的在pom文件中的这个看图:

 

 

没错,packaging标签我们不应该写成pom,要嘛不写去掉,要嘛就写成jar。

然后重启springBoot项目就不会报这个错误了,希望能帮到大家。

 

org.springframework.beans.factory.BeanCreationExce

org.springframework.beans.factory.BeanCreationExce

??: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''baseDao'' defined in file [/Users/jackshi/Documents/ws/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JiracleGWT/WEB-INF/classes/com/yxtar/server/cassandra/dao/BaseDao.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: ''sessionFactory'' or ''hibernateTemplate'' is required
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1514)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4961)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5455)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IllegalArgumentException: ''sessionFactory'' or ''hibernateTemplate'' is required
	at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:123)
	at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1573)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1511)
	... 21 more
	
	
	
dao的父类注入sessionfactory
@Repository
public class BaseDao extends HibernateDaoSupport {
	@Autowired
	public void setSessionFactory0(SessionFactory sessionFactory){
	     super.setSessionFactory(sessionFactory);
	}
}


关于org.springframework.beans.factory.CannotLoadBeanClassException:找不到类spring 找不到或无法加载主类的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Bean实例化报错org.springframework.beans.factory.BeanCreationException、Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name...、Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException、org.springframework.beans.factory.BeanCreationExce等相关知识的信息别忘了在本站进行查找喔。

本文标签: