Java eclipse/tomcat:deploy&x27;不再工作(ClassNotFoundException)
我正在运行EclipseHeliosServiceRelease1,在Linux UbuntuNattyNarhall中运行Tomcat7.0.12 我一直很高兴重新部署我的webapp,直到它毫无理由停止工作。将显示以下异常:Java eclipse/tomcat:deploy&x27;不再工作(ClassNotFoundException),java,linux,eclipse,tomcat,classnotfoundexception,Java,Linux,Eclipse,Tomcat,Classnotfoundexception,我正在运行EclipseHeliosServiceRelease1,在Linux UbuntuNattyNarhall中运行Tomcat7.0.12 我一直很高兴重新部署我的webapp,直到它毫无理由停止工作。将显示以下异常: SEVERE: Allocate exception for servlet Index java.lang.ClassNotFoundException: obliquid.servlet.Index at org.apache.catalina.loader
SEVERE: Allocate exception for servlet Index
java.lang.ClassNotFoundException: obliquid.servlet.Index
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
- 在Servers选项卡中,我看到了“本地主机上的Tomcat v7.0服务器[已启动,已同步]
- 我的项目显示为Tomcat v7.0服务器的子项目
- 在Properties中,Java构建路径,Source I'veproject/src Source文件夹
- 在属性、Web部署程序集中,我有以下映射:/WebContent->/、/src->/Web-INF/classes、/test->/build/classes
- 我的src目录在obliquid/Servlet/Index.java中包含一个Servlet
- 我已经试着点击清理模块工作目录…并发布
- 我试图在Eclipse服务器选项卡中停止和启动服务器
Stop -> Clean... -> Start (404)
Stop -> Clean Tomcat Work Directory... -> Start (404)
Stop -> Clean Tomcat Work Directory... -> Clean... -> Start (404)
Stop -> Remove on the application -> Clean... -> Run As -> Run on Server -> (404)
Exit Eclipse, Start Eclipse
Start the server -> (404)
更新3结果表明,这次我没有注意到启动过程中侦听器类引起的异常。解决问题后,它工作了。我想我应该在凌晨3点停止工作。我建议您停止并再次启动Tomcat服务器。热部署不会永远工作;有些问题将导致您必须在重新部署几次后重新启动。我发现此过程非常有用:
- 单击服务器选项卡,如果服务器正在运行,则停止正在使用的服务器
- 再次右键单击服务器并选择清理…
- 再次右键单击并选择清理Tomcat工作目录…
编辑:这个较短的过程在大多数情况下对我有效,但今天不起作用,我不得不遵循Mico的扩展过程。我的建议是,如果你有类似的问题,首先尝试这个较短的过程。如果问题仍然存在,请尝试使用Mico的。在Tomcat 6和Eclipse Ganymede上,我发现以下问题:我要像魅力一样工作: 一站式服务器 2项目->清洁 3项目生成(我禁用了自动生成) 4删除服务器 5删除服务器文件夹 6重新启动Eclipse 7创建新服务器,添加项目并启动:)
需要一些时间,但效果很好。我的问题是一个恼人的侦听器启动问题,但这似乎是类似的:tomcat的一个属性。顺便说一句:现在我也是一个玻璃鱼迷。这可能是我从中学到的。对我来说,这听起来像是一个类加载器问题 背后的理论:
- Java不仅使用类的类型,还使用加载它的类加载器来标识实例的类型 A类a1=新a1; ClassA a2=SomeOtherClass.giveMeInstanceOfA(); a1=a2
- 演讲者还提到一些服务器默认使用大约45个不同的类加载器
我知道这并不能解决您的问题,但可以给您一些可能发生的情况的提示。说到Tomcat的热部署,您确实会遇到各种问题,其中最不严重的是内存泄漏,这就是您必须重新启动应用程序的原因。我建议您尝试JRebel以快速恢复”进行并保存任何更改,然后刷新浏览器并立即查看更改“。您可以找到JRebel实践实验室,它展示了如何将它与Tomcat和Eclipse结合使用 我遇到了同样的问题-尝试了上述所有方法,当我尝试启动服务器时,Eclipse总是冻结,即使我删除了所有服务器配置并使用新下载的tomcat实例创建了一个新的服务器配置。不管怎样,直到我搬家,问题才解决