[解決済み] org.springframework.beans.factory.CannotLoadBeanClassException.CannotLoadBeanClassException: Cannot find class
質問
tomcat 6.0 のインストールディレクトリの j2ee.jar を servle-api.com に置き換えてみました。 その結果、以下のようなエラーが発生しました。現在、原因を調べているところです。何が問題なのでしょうか?
私は設定ファイルに定義されたビーンを持っています。 Sempediaサービス.xml 以下のように
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="sempediaSearchService"
class="com.service.SempediaSearchManager" />
</beans>
私の web.xml は以下のビーンズを指定しています。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Sempedia-service.xml,/WEB-INF/Sempedia-persistence.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
スタックトレース
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.service.SempediaSearchManager] for bean with name 'sempediaSearchService' defined in ServletContext resource [/WEB-INF/Sempedia-service.xml]; nested exception is java.lang.ClassNotFoundException: com.service.SempediaSearchManager
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1141)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:758)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:422)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException: com.service.SempediaSearchManager
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:211)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)
... 24 more
解決方法は?
というクラスが存在しないことが問題です。
com.service.SempediaSearchManager
をウェブアプリのクラスパスに追加してください。 最も可能性の高い根本的な原因は
-
で完全修飾クラス名が正しくない。
/WEB-INF/Sempedia-service.xml
つまり、クラス名は他のものです。 -
クラスがウェブアプリケーションの
/WEB-INF/classes
のディレクトリツリーまたは JAR ファイルを/WEB-INF/lib
ディレクトリに格納されます。
EDIT
: 他に思い当たるのは
ClassDefNotFoundException
は、実際には、以前のクラスの読み込み/静的初期化の問題の結果である可能性があります。 ログファイルをチェックして
最初
スタックトレースと、ネストされた例外、つまり "caused by" チェーンを調べてみてください。 [クラスのロードに一度だけ失敗し、あなたやSpringが
Class.forName()
何らかの理由でもう一度ロードしようとした場合、Javaは実際には2回目のロードを試みない。 その代わりに
ClassDefNotFoundException
スタックトレースには、最初の失敗の本当の原因が説明されていません]。
それでもまだ困っているのなら、Eclipseを外せばいいのです。 最終的にデプロイするような形でWARファイルを作成し、コマンドラインから実行します。
-
Tomcatを手動でシャットダウンします。
-
Tomcatのwebappディレクトリをクリーンアップします。
-
WAR ファイルを webapp ディレクトリにコピーします。
-
Tomcatを起動します。
それでも問題が直接解決しない場合は、Tomcat上に配置されたwebappディレクトリを見て、"missing"クラスが正しい場所にあることを確認します。
関連
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み】宣言されたパッケージが期待されるパッケージと一致しない ""
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] if / for / while 内で "Missing return statement" が発生する。
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】文字列中の � を置換する方法
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。