質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

3224閲覧

【tomcat・Spring】フィルタの起動中にClassNotFoundException

退会済みユーザー

退会済みユーザー

総合スコア0

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2019/04/27 13:34

編集2019/04/27 14:38

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wtokuno

2019/04/27 14:20

どうやってプログラムを実行しようとしたのでしょうか?
退会済みユーザー

退会済みユーザー

2019/04/27 14:31

eclipseにtomcatを登録し、そちらを実行しました。
wtokuno

2019/04/27 14:36

Eclipse に登録されているウェブサーバーにデプロイするには Eclipse 上で動的Webプロジェクトとして存在していないといけないはずですが、 どのようにして Eclipse にプロジェクトを作成 (あるいはインポート) しましたか?
退会済みユーザー

退会済みユーザー

2019/04/28 04:54

@wtokuno 例外が出てる時点で登録はすんでるはず(対象のプロジェクトかはしらないが)
退会済みユーザー

退会済みユーザー

2019/04/28 04:57

質問者、 .plugin フォルダの奥底深くに 、そのサーバー構成用のwebapp (webapp を含む形式をとっている)の配下にある対象のコンテキストの ファイルサイズとMD5値をあげてみてはいかが?
退会済みユーザー

退会済みユーザー

2019/04/28 10:00

@asahina1979 ご質問の内容がはっきり分からず恐縮なのですが、2点ほど確認させてください。 ・「.pluginフォルダ」というのは、「\(eclipseのワークスペース)\.metadata\.plugins」フォルダのことでお間違いないでしょうか?(ワークスペース内ではこちらのフォルダしか見つかりませんでした) ・上記フォルダ内で「webapps」で検索したところ、「\org.eclipse.wst.server.core\tmp1\wtpwebapps」フォルダが見つかり、その中に「\berserker(今回作成しているプロジェクトのパッケージ名)\applicationContext.xml」がありました。 こちらのファイルのファイルサイズ、MD5値で宜しければお伝えします。ファイルサイズは2,257byte,MD5値は"58f3ee0b37c5b1d68e5abcfdf73ac9b3"です。
guest

回答2

0

ベストアンサー

理由は分からないのですが、Java Configurationを試してみたりなどしている内に解消してしまいました。
詳しい理由に関しては判明し次第追記いたします。

投稿2019/06/28 13:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

提示していただいているビルド設定では、以下のビルドエラーが出力されていますが、これは解決済みでしょうか?

FAILURE: Build failed with an exception. * Where: Build file '[作業ディレクトリ]\spring-mvc-gradle-sample\build.gradle' line: 22

22行目:

implementation "org.slf4j:slf4j-api:$slf4jVersion"

その他、gradle.propertiesに未設定のバージョンがいくつかあるようです。

投稿2019/05/08 22:09

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/14 15:11

お返事が遅くなってしまい申し訳ありませんでした。 ビルドエラーが出力されているとのことですが、こちらで再現できず困っております。 使用したコマンドなど詳細をお伝え願えませんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問