前提・実現したいこと
Spring MVCを利用してシステム開発を行おうとしているのですが、初期設定が上手くいっていないようで、tomcatの起動時に下記のエラーメッセージが表示されてしまいました。
なお、eclipseにtomcatを登録して使用しており、ビルドツールとしてgradleを使用しております。
プロジェクトはgradleプロジェクトとして作成し、プロジェクトの「プロパティ - プロジェクトファセット」より、動的Webモジュールにチェックを入れました。
発生している問題・エラーメッセージ
Tomcat
1重大: フィルタ [SetCharacterEncodingFilter] の起動中の例外です 2java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 3 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1363) 4 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1186) 5 at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:540) 6 at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:521) 7 at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150) 8 at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249) 9 at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102) 10 at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4530) 11 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5176) 12 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 13 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1377) 14 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1367) 15 at java.util.concurrent.FutureTask.run(FutureTask.java:266) 16 at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 17 at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) 18 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:902) 19 at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831) 20 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 21 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1377) 22 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1367) 23 at java.util.concurrent.FutureTask.run(FutureTask.java:266) 24 at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 25 at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) 26 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:902) 27 at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) 28 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 29 at org.apache.catalina.core.StandardService.startInternal(StandardService.java:423) 30 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 31 at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:928) 32 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 33 at org.apache.catalina.startup.Catalina.start(Catalina.java:634) 34 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 35 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 36 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 37 at java.lang.reflect.Method.invoke(Method.java:498) 38 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350) 39 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
該当のソースコード
####web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/index.html</location> </error-page> <error-page> <error-code>500</error-code> <location>/index.html</location> </error-page> <!-- 文字コードのエンコード --> <filter> <filter-name>SetCharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring MVCの設定 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!--リクエストパターン指定、*.xhtml の * の部分でコントローラをマッピングする --> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> </web-app>
####applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 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.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <mvc:annotation-driven /> <!-- //@RestController 406エラー対策 --> <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/> <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <!-- Turn off working out content type based on URL file extension, should fall back to looking at the Accept headers --> <property name="favorPathExtension" value="false" /> <property name="ignoreAcceptHeader" value="false" /> </bean> <!-- enable autowire --> <context:annotation-config /> <context:component-scan base-package="berserker.controll"/> <context:component-scan base-package="berserker.model"/> <!--AspectJ 使用宣言 --> <aop:aspectj-autoproxy /> <!-- Validatorメッセージリソースファイル --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:/ValidationMessages" /> </bean> </beans>
####build.gradle
// -*- coding: utf-8; mode: groovy -*- apply plugin: "java" sourceCompatibility = 1.11 targetCompatibility = 1.11 // ======== libraries ======== repositories { mavenCentral() } dependencies { // spring implementation "org.springframework:spring-context-support:$springVersion" implementation "org.springframework:spring-tx:$springVersion" implementation "org.springframework:spring-jdbc:$springVersion" implementation "org.springframework:spring-webmvc:$springVersion" implementation "org.springframework:spring-web:$springVersion" annotationProcessor "org.springframework:spring-webmvc:$springVersion" // loggers implementation "org.slf4j:slf4j-api:$slf4jVersion" implementation "org.slf4j:jul-to-slf4j:$slf4jVersion" implementation "ch.qos.logback:logback-classic:$logbackVersion" // other implementation "org.projectlombok:lombok:$lombokVersion" annotationProcessor "org.projectlombok:lombok:$lombokVersion" implementation "mysql:mysql-connector-java:$mysqlVersion" // testing testImplementation "junit:junit:$junitVersion" testImplementation "org.hamcrest:hamcrest-library:$hamcrestVersion" testImplementation "org.mockito:mockito-core:$mockitoCoreVersion" }
####gradle.properties
# artifact version currentVersion = 1.0-SNAPSHOT # dependency versions springVersion = 5.1.6.RELEASE lombokVersion = 1.18.6 mysqlVersion = 8.0.14 slf4jVersion = 1.7.12 logbackVersion = 1.1.3 junitVersion = 4.12 hamcrestVersion = 1.3 mockitoCoreVersion = 1.10.19
試したこと
エラーメッセージの内容から、org.springframework.web.filter.CharacterEncodingFilterクラスが読み込めていないと考え、下記を確認しました。
- web.xml内に記載したクラス名
- ライブラリ内に、上記クラスを含むライブラリ(spring-web)が存在すること
補足情報(FW/ツールのバージョンなど)
Java:AdoptOpenJDK 11.0.3.7)
Tomcat:9.0.17
Spring:5.1.6
Gradle:5.4.0
回答2件
あなたの回答
tips
プレビュー