eclipse/tomcat:部署不再起作用(ClassNotFoundException)
- 2024-11-04 08:42:00
- admin 原创
- 60
问题描述:
我正在 Linux Ubuntu Natty Narwhal 中运行 Eclipse Helios Service Release 1 和 Tomcat 7.0.12。
我一直很高兴地重新部署我的 web 应用程序,直到它毫无理由地停止工作。显示以下异常:
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)
在“服务器”选项卡中,我有“位于 localhost 的 Tomcat v7.0 服务器 [已启动,已同步]
我的项目显示为 Tomcat v7.0 Server 的子项
在属性、Java 构建路径、源中我有Project/src源文件夹
在属性、Web 部署程序集中,我有以下映射:/WebContent -> /,/src -> /WEB-INF/classes,/test -> /build/classes
我的src目录包含obliquid/servlet/Index.java中的 Servlet
我已经尝试点击清理模块工作目录...并发布
我尝试从 Eclipse 服务器选项卡中停止并启动服务器
我还应该检查什么?谢谢。
更新尽管我现在正在处理新项目,但我还是回来检查旧项目,奇怪的是它现在正在运行。我想我无法发现发生了什么。
但是今天在新项目中,我遇到了 404 错误,但原因不明,我发现右键单击 Tomcat 服务器并选择“清理...”很有用。也许这能有所帮助。
选择“清除...”显示:“清除将丢弃所有发布状态并从头开始重新发布。您确定要清除所有已发布的资源吗?”。选择是,我解决了问题
更新 2它在新项目中再次发生。404 错误,这次它们不会消失。
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 点停止工作。
解决方案 1:
在使用 Tomcat 6 和 Eclipse Ganymede 时,我发现以下链可以很好地工作:
1 停止服务器
2 项目 -> 清理
3 项目构建(我已禁用自动构建)
4 删除服务器
5 删除服务器文件夹
6 重启 Eclipse
7 创建新服务器,添加项目并启动:)
需要一些时间,但效果很好。我遇到的问题是令人恼火的 Listener 启动问题,但这似乎是类似问题:tomcat 的一个属性。顺便说一句:现在我也是 Glassfish 的忠实粉丝。
解决方案 2:
我发现这个过程很有用:
单击“服务器”选项卡,然后停止正在运行的服务器
再次右键单击服务器并选择清理...
再次右键单击并选择清理 Tomcat 工作目录...
希望 ClassNotFoundException 现在已经消失了。
还有一次,我在服务器启动时启动的类中遇到了问题,监听器类 (ServletContextListener) 中出现了异常。当 ServletContextListener 在启动期间引发异常时,应用程序部署将中止,因此会出现 404 错误。在这种情况下,修复导致异常的问题,使应用程序重新运行。
编辑:这个较短的程序在大多数情况下对我都有效,但今天不起作用,我不得不遵循 Mico 的扩展程序。我的建议是,如果您遇到类似问题,请先尝试这个较短的程序。如果问题仍然存在,请尝试使用 Mico 的程序。
解决方案 3:
我建议您停止并重新启动 Tomcat 服务器。热部署不会永远有效;有些问题会导致您在重新部署几次后必须重新启动。
解决方案 4:
我想知道,当我看到被接受的答案+25时它是否真的准确?
首先,如果你要删除服务器,那么清理它有什么意义呢?这会浪费你不必要的时间,而且不会给你带来任何好处。
所以我想说,只需5、6、7 步就可以产生神奇的效果
5 删除服务器文件夹
6 重启 Eclipse
7 创建新服务器,添加项目并启动
解决方案 5:
这可能是我在2011 年的会议上学到的东西。对我来说,这听起来像是一个类加载器问题。
背后的理论:
Java 不仅使用类的类型,还使用加载它的类加载器来识别实例的类型。这意味着一个简单的操作可能会失败,例如
A类a1=新a1; ClassA a2 = SomeOtherClass.giveMeInstanceOfA(); a1=a2;
如果 SomeOtherClass 使用不同的类加载器,此示例将会失败,因为 Java 会说它们不一样。
演讲者还提到,一些服务器默认使用大约 45 种不同的类加载器。
这在实践中意味着什么:
您将 Web 应用程序部署到服务器,一切运行正常。服务器将类和加载它们所需的一切缓存到某个地方。现在您进行热部署,服务器可能会使用新的(或不同的)类加载器加载新类。这是开始变得危险的点,因为从现在开始,您在内存中有两个应该相同的不同类。简单的操作(如强制转换(ClassA a = (ClassA) new ClassA()))失败,找不到类中的新方法(因为服务器采用没有此方法的缓存版本),......
此时我重新启动服务器,清理工作目录(以摆脱缓存版本)并开始考虑热部署是关键的事情。
如果可以尝试 Mikkos 程序并且能够解决问题,那么这个解释可以帮助您理解原因。
我知道这并不能解决您的问题但可以给您一些可能发生的提示。
解决方案 6:
说到 Tomcat 的热部署,您确实会遇到各种问题,其中最不严重的就是内存泄漏,这就是您必须重新启动应用程序的原因。我建议尝试 JRebel,以实现“进行并保存任何更改,然后刷新浏览器并立即查看更改”的快速周转。您可以找到 JRebel 动手实验室,其中展示了如何将其与 Tomcat 和 Eclipse 一起使用。http ://www.javapassion.com/rebels/jrebel_basics/
解决方案 7:
我在编程方面获得了一些新经验,不再渴求 Eclipse + Tomcat 组合。以下几种方法可以帮助您摆脱使用该组合的需要:
首先,不要一起使用它们!
您可以使用其他可用的 IDE,例如 IntellijIdea(虽然不是免费的,但值得投资)具有一个特性,即当您调试 Java 代码时,您可以动态更改代码并逐个编译 Java 文件,然后它会建议您是否要在服务器上更新它。几乎从不需要重新启动(当然有时会丢失,但主要是它可以工作)。
使用独立的 tomcat 服务器,而不是 Eclipse/IDE 里面的服务器。第一个技巧只有在调试外部服务器时才有效,IDE 内部则无效。还有第二个技巧:如果您碰巧只更改了 jsp 或 html 内容,则可以使用 unix cp 或 windows copy 命令手动将这些文件复制到 tomcat 的 webapp 文件夹内的正确位置;如果您碰巧在同一个文件夹中开发文件很长时间,您可以根据需要多次复制文件夹内容(例如 myFolder/*.jsp),无需重启。当您触摸或编辑并保存 webapps 文件夹内的 web.xml 文件,然后刷新浏览器上的可见页面时,更改就会可见。使用 CTRL+F5 硬刷新可能是最好的方法。
感谢@Verdan 的评论,否则我不会回来再次回答。
解决方案 8:
我能够通过禁用 maven 特性(右键单击项目 >> maven >> 禁用 maven 特性)来解决这个问题。然后重新启用它(右键单击项目 >> 配置 >> 转换为 maven 项目)。我尝试了上述所有其他技巧和窍门,但这是最终奏效的。
解决方案 9:
我遇到了同样的问题 - 尝试了上述所有方法,当我尝试启动服务器时,Eclipse 总是冻结,即使我删除了所有服务器配置并使用新下载的 tomcat 实例创建了一个新配置。无论如何,直到我移动到新的工作区、重新导入项目并创建新服务器后,问题才得到解决。对我来说这似乎是 Eclipse 的一个错误...所以如果其他方法都不起作用,这就是解决办法...
解决方案 10:
我目前正在努力解决同样的问题,但这里提到的任何内容都对我没有帮助。无论如何,我发现如果我:
在 eclipse 中停止服务器
在其他地方运行 tomcat(我的情况是 xamp 发行版)
停止当前正在运行的 tomcat
在 eclipse 中启动 tomcat
一切都运行良好,当然,直到我改变代码中的某些内容并尝试再次测试它。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件