Springを勉強中です。
Designing and Implementing a Web Application with Spring
でbuild.gradleにtomcatの設定をしてサーブレットが動くようになるんですが、
tomcatRunWarを実行してもexceptionが出て失敗する…
StandardWrapper.Throwable org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [/Users/Tono/IdeaProjects/tut-web-master/3/complete/build/tmp/tomcatRunWar/work/Tomcat/localhost/_/WEB-INF/classes/com/yummynoodlebar/web/controller/SiteController.class]; nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [/Users/Tono/IdeaProjects/tut-web-master/3/complete/build/tmp/tomcatRunWar/work/Tomcat/localhost/_/WEB-INF/classes/com/yummynoodlebar/web/controller/SiteController.class]; nested exception is java.lang.IllegalArgumentException at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:290) at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242) at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:123) at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:191) at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:165) at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:140) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:282) at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:505) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) at javax.servlet.GenericServlet.init(GenericServlet.java:160) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1091) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460) 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:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:744)
なんじゃこりゃーっていろいろ調べていたのですがわからず。
ただ、exceptionの長い2行目を良ーく見てみると、
probably due to a new Java class file version that isn’t supported yet
と。
あー、そういえば、Intelli Jにインポートしたときに、JDKのバージョンが1.8になってたんだ。
Java8に正式対応したのはSpring4からなんで、このチュートリアルではJava7使わないといけませんね。
というわけで、Project StructureからJDKを1.7に変更。
あと、tomcatStopを実行しても止まってくれないのでbuild.gradleに下記を追加。
[tomcatRun, tomcatRunWar, tomcatStop]*.stopPort = 8080
[tomcatRun, tomcatRunWar, tomcatStop]*.stopKey = ‘foo’
gradleのコマンドはよく分からないのでclean, build, warを適当に実行して、
tomcatRunWarでやっと見えた。
めでたしめでたし。
実際の現場で使うときはSpring4にしなきゃなぁ。
でもSpring Security 3.2はSpring4でもテストしてあるって書いてあるし、4で問題なさそう。
コメント