ダークエリア

SEのお仕事の備忘録や、ゲームの話などなどを記事に放り込む!!

Spring Tomcat 起動時のエラー

SpringでWebページ開発を始めた際、Tomcatの起動でエラーが出た。

職場の先輩方にも協力してもらって何とか解決。。

 

<開発環境>

StrutsからSpringへのリファクタリング作業 環境構築

・Spring Tool Suite(STS) Version: 3.9.4.RELEASE

 Platform: Eclipse Oxygen.3a (4.7.3a)

・JDK9.0.4

 

<エラー>

①Actionがないみたいなことを言われる

Caused by: java.lang.IllegalStateException: Failed to introspect Class [jp.co.nantokakantoka.action.XxxAction] from ClassLoader [WebappClassLoader
context: /[project-name]
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
java.net.URLClassLoader@74ad1f1f
]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:659)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:556)
at org.springframework.core.MethodIntrospector.selectMethods(MethodIntrospector.java:69)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:235)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:218)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:188)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:129)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1769)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706)
... 21 more
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.base/java.lang.Class.getDeclaredMethods(Unknown Source)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:641)
... 29 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)
... 33 more
8月 10, 2018 10:04:47 午前 org.apache.catalina.core.StandardContext listenerStart
重大: クラス org.springframework.web.context.ContextLoaderListener のリスナインスタンスにコンテキスト初期化イベントを送信中の例外です
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [jp.co.nantokakantoka.action.XxxAction] from ClassLoader [WebappClassLoader
context: /[project-name]
delegate: false
repositories:
/WEB-INF/classes/

 

Tomcat起動時、エラーが出る

8月 10, 2018 10:04:47 午前 org.apache.catalina.core.StandardContext startInternal
重大: One or more listeners failed to start. Full details will be found in the appropriate container log file
8月 10, 2018 10:04:47 午前 org.apache.catalina.core.StandardContext startInternal
重大: 以前のエラーのためにコンテキストの起動が失敗しました [/[project-name]]
8月 10, 2018 10:04:47 午前 org.apache.catalina.core.ApplicationContext log
情報: Closing Spring root WebApplicationContext
8月 10, 2018 10:04:47 午前 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesResourceBundles
重大: Failed to clear ResourceBundle references for web application [/[project-name]]
java.lang.NoSuchFieldException: loaderRef
at java.base/java.lang.Class.getDeclaredField(Unknown Source)
at org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesResourceBundles(WebappClassLoaderBase.java:2959)
at org.apache.catalina.loader.WebappClassLoaderBase.clearReferences(WebappClassLoaderBase.java:2198)
at org.apache.catalina.loader.WebappClassLoaderBase.stop(WebappClassLoaderBase.java:2068)
at org.apache.catalina.loader.WebappLoader.stopInternal(WebappLoader.java:661)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5822)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)

 

<解決方法>

JDK9をJDK1.8に変更した

JDK9は不評らしい。。海外の人が引っ掛かっているらしく、SpringではなくTomcatなどと絡んでよくある問題らしい。JDK10にしても直ると聞いたけど、安定の8にした。

職場の先輩が言うには、フォルダの構成が全く違うし、証明書関連が怪しいと思ったとのこと。すげぇ。

 

<そのた>

EclipseでもWebの開発はしていたが、そちらではなぜ起きなかったか

 ⇒EclipseAllInOneを使っていたため、JDKEclipse内包のものを使っていたから無事だった