我意识到有类似的问题,但我不知所措。我有一个maven,JSF2 webapp,无论什么 - 什么都不会在Eclipse中运行在Tomcat上。我已经尝试了许多人提到的"Deployment Assembly" trick和“build path trick”,但都没有效果。
我相信它与C:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
中的输出无关。当我将war部署到同一个tomcat实例(包括所有属性文件,xhtml文件和libs)时,此目录模仿部署的内容。唯一的例外是我的war包含.class文件,而源.java文件包含wtpwebapps。直接部署到tomcat可以正常工作 - 找到并加载所有servlet。
在我获得JSF2安装的答案之前,它不是......当Tomcat尝试加载我的自定义servlet时,我收到错误。例如:
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)
在上面的堆栈中,可以在...\wtpwebapps\webapp\WEB-INF\classes\com\webapp\ui\Log4JInitServlet.java
一些细节:
作为最后一个FYI,我尝试过旧版本的Eclipse以及旧版本的Tomcat(回到6)。
答案 0 :(得分:1)
你不应该在WEB-INF / classes中有一个.java文件;这就是.class文件中编译的字节代码的位置。
您的Eclipse项目应该在/ src目录中包含.java源文件。然后,您要求它将已编译的.class文件写入爆炸或打包的WAR文件及其WEB-INF / classes文件夹。