1. 程式人生 > >關於springmvc註解掃描報錯500的解決方案

關於springmvc註解掃描報錯500的解決方案

HTTP Status 500 - Servlet.init() for servlet springmvc threw exception

type Exception report

message Servlet.init() for servlet springmvc threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	java.lang.Thread.run(Thread.java:745)

root cause

java.lang.IllegalArgumentException
	org.springframework.asm.ClassReader.<init>(Unknown Source)
	org.springframework.asm.ClassReader.<init>(Unknown Source)
	org.springframework.asm.ClassReader.<init>(Unknown Source)
	org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)
	org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
	org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
	org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
	org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298)
	org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
	org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
	org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230)
	org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)
	org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130)
	org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285)
	org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)
	org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)
	org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)
	org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)
	org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)
	org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)
	org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)
	javax.servlet.GenericServlet.init(GenericServlet.java:158)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	java.lang.Thread.run(Thread.java:745)




 歷盡天華成此景,人間萬事出艱辛!!!!
  
真的是不容易啊!在百度上面找了好多,一直持續了兩個多星期
的BUG,終於解決了!或許這就是功到自然成吧!!
或許這些點點滴滴不能決定我們的今後,但當我們某一天回頭看時
這一切將會是十分有意義的。

解決方案:就網上資料而言,可能是JDK1.8和Tomcat以及
SpringMVC3.2版本不相容,因此會產生這樣的報錯,他們的解決
方式要麼降低JDK的版本到1.7以下,要麼升級SpringMVC版本到4.0
以上。
   就我自己遇到的情況不是這樣能解決的。我的原因是我的Tomcat
的JRE包所導致的。我用的是eclipse,myeclipse中也存在server,
進入選項更改。
唯有com.sun.java.jdk.win32.x86_64_1.6.0.013這個JRE的包才 發揮作用,請不要問我為什麼!! 我可以告訴你這個包的來源,如果你電腦裡裝了MyEclipse,你可 以去裡面的路徑安裝JRE的包, 此路徑為:Myeclipse\Common\binary\ com.sun.java.jdk.win32.x86_64_1.6.0.013 安裝後啟動伺服器!即可完成!!!