Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Eclipse运行Maven应用程序的所有servlet上的ClassNotFoundException_Java_Eclipse_Jsf_Tomcat_Maven - Fatal编程技术网

Java 从Eclipse运行Maven应用程序的所有servlet上的ClassNotFoundException

Java 从Eclipse运行Maven应用程序的所有servlet上的ClassNotFoundException,java,eclipse,jsf,tomcat,maven,Java,Eclipse,Jsf,Tomcat,Maven,我意识到也有类似的问题,但我不知所措。我有一个maven、JSF2 Web应用程序,无论发生什么,它都不会从Eclipse中运行在Tomcat上。正如许多人提到的那样,我尝试了和“”,但两者都不起作用 我相信这与C:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps中的输出无关。这个目录模拟了我将war部署到同一个tomcat实例(包括所有属性文件、xhtml文件和LIB)时所部署的内容。唯一的例外是

我意识到也有类似的问题,但我不知所措。我有一个maven、JSF2 Web应用程序,无论发生什么,它都不会从Eclipse中运行在Tomcat上。正如许多人提到的那样,我尝试了和“”,但两者都不起作用

我相信这与
C:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
中的输出无关。这个目录模拟了我将war部署到同一个tomcat实例(包括所有属性文件、xhtml文件和LIB)时所部署的内容。唯一的例外是,我的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)
在上面的堆栈中,类Log4JInitServlet位于
..\wtpwebapps\webapp\WEB-INF\classes\com\webapp\ui\Log4JInitServlet.java

一些细节:

  • 日食朱诺
  • EclipseWTP3.4.0和“org.Eclipse.jst.web_core.feature的WTP补丁”
  • Maven 3.0.3
  • Tomcat 7.0.29
  • JSF-MyFaces2.1.5
  • JDK-1.7.0_05

最后,我尝试了Eclipse的旧版本以及Tomcat的旧版本(回到6)

WEB-INF/classes中不应该有.java文件;这就是.class文件中编译的字节码的位置


您的Eclipse项目应该在/src目录中有.java源文件。然后要求它将编译后的.class文件写入分解或打包的WAR文件及其WEB-INF/classes文件夹。

WEB-INF/classes中不应包含.java文件;这就是.class文件中编译的字节码的位置


您的Eclipse项目应该在/src目录中有.java源文件。然后要求它将编译后的.class文件写入分解或打包的WAR文件及其WEB-INF/classes文件夹。

非常有趣。。。我发现问题在于我所依赖的一个jar被设置为提供,因为它应该位于servers的/lib文件夹中(它支持JAAS登录)。一旦我将代码恢复到范围为“编译”的早期版本,它就可以再次运行了。因为这样做之后,它在wtpwebapps文件夹中生成了.class文件,而不是.java文件,所以您可以获得正确回答的要点。好好想想。谢谢你的帮助。很有趣。。。我发现问题在于我所依赖的一个jar被设置为提供,因为它应该位于servers的/lib文件夹中(它支持JAAS登录)。一旦我将代码恢复到范围为“编译”的早期版本,它就可以再次运行了。因为这样做之后,它在wtpwebapps文件夹中生成了.class文件,而不是.java文件,所以您可以获得正确回答的要点。好好想想,谢谢你的帮助。