私はしばらくの間、Eclipse 内から同じ Web アプリケーションを実行しており、org.apache.commons.io.output.ByteArrayOutputStream を多用しています。
commons-io-2.4.jar がビルド パスに含まれ、エクスポート済みとしてマークされているにもかかわらず、突然、プロジェクトは ClassNotFoundException をスローするようになりました。
このクラスはしばらく使用されているため
、クラスが確実に見つかるようにするにはどうすればよいでしょうか?
編集: Tomcat 7.0.40 と Tomcat 6.0.33
の 2 つのサーバーを構成しています。問題は Tomcat 7 でのみ表示されます。
注: 次の回避策が試みられています。
- エクリプスを再起動します。
- クリーンアップ プロジェクト
- commons-io-2.4.jar を削除して再度追加します
スタックトレース:
SEVERE: 起動中に子コンテナが失敗しました java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: コンポーネントの起動に失敗しました [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebApp]] java.util.concurrent.FutureTask$Sync.innerGet (不明なソース) で java.util.concurrent.FutureTask.get (不明なソース) で org.apache.catalina.core.ContainerBase.startInternal (ContainerBase.java:1123) で org.apache.catalina.core.StandardHost.startInternal (StandardHost.java:800) で org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) で org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) で org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) で java.util.concurrent.FutureTask$Sync.innerRun (不明なソース) で java.util.concurrent.FutureTask.run (不明なソース) で java.util.concurrent.ThreadPoolExecutor.runWorker で (不明なソース) java.util.concurrent.ThreadPoolExecutor$Worker.run (不明なソース) で java.lang.Thread.run で (不明なソース) 原因: org.apache.catalina.LifecycleException: コンポーネントの起動に失敗しました [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebApp]] org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:154) で ... 7 つ以上 原因: java.lang.NoClassDefFoundError: org/apache/commons/io/output/ByteArrayOutputStream java.lang.Class.getDeclaredFields0 (ネイティブ メソッド) で java.lang.Class.privateGetDeclaredFields (不明なソース) で java.lang.Class.getDeclaredFields (不明なソース) で org.apache.catalina.util.Introspection.getDeclaredFields (Introspection.java:106) で org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation (WebAnnotationSet.java:261) で org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations (WebAnnotationSet.java:140) で org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations (WebAnnotationSet.java:67) で org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig (ContextConfig.java:405) で org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881) で org.apache.catalina.startup.ContextConfig.lifecycleEvent (ContextConfig.java:369) で org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:119) で org.apache.catalina.util.LifecycleBase.fireLifecycleEvent (LifecycleBase.java:90) で org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5269) で org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) で ... 7 つ以上 原因: java.lang.ClassNotFoundException: org.apache.commons.io.output.ByteArrayOutputStream org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1714) で org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1559) で ... 21以上