同様の質問があることは承知していますが、途方に暮れています。私は、Eclipse内からTomcatで実行されないものであるMavenのJSF2Webアプリを持っています。多くの人が言及しているように、「DeploymentAssembly」トリックと「 buildpathトリック」を試しました が、どちらも機能しません。
の出力とは関係がないと確信していますC:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
。このディレクトリは、すべてのプロパティファイル、xhtmlファイル、およびライブラリを含む同じTomcatインスタンスにwarをデプロイするときにデプロイされるものを模倣しています。唯一の例外は、私の戦争には.classファイルが含まれているのに対し、ソース.javaファイルはwtpwebappsにあることです。tomcatに直接デプロイすると、正しく機能します。すべてのサーブレットが検出され、ロードされます。
JSF2のインストールに関する回答を得る前に、それはそうではありません...Tomcatがカスタムサーブレットをロードしようとするとエラーが発生します。例えば:
Sep 21, 2012 10:16:27 AM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /webapp threw load() exception
java.lang.ClassNotFoundException: com.webapp.ui.Log4JInitServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
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$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
上記のスタックでは、クラスLog4JInitServletは次の場所にあります。...\wtpwebapps\webapp\WEB-INF\classes\com\webapp\ui\Log4JInitServlet.java
いくつかの詳細:
- Eclipse Juno
- 「org.eclipse.jst.web_core.featureのWTPパッチ」を使用したEclipseWTP3.4.0
- Maven 3.0.3
- Tomcat 7.0.29
- JSF-MyFaces 2.1.5
- JDK-1.7.0_05
最後の参考までに、古いバージョンのEclipseと古いバージョンのTomcat(6に戻る)を試しました。