几个月前,我正在为客户端更改此Web应用程序。它是一个使用tomcat作为Web服务器的JSP Web应用程序。我做了改动,测试了(当然),并将应用程序留给了客户。他们回到我身边并提到该网站的某个特定区域无法正常工作。我进去检查一下这个区域,确实它没有工作,但几个月前我做了改动时它正在工作。
这个问题遇到了一个非常不寻常的问题。相关目录中的每个页面(/ tomcat / webapps / website / english / login)都会抛出java.lang.ClassNotFoundException。
要解决这个问题,我尝试使用" hello world"创建一个空白的JSP。并且没有编码,仍然抛出java.lang.ClassNotFoundException。我在这个目录之外创建了相同的JSP页面,它很好
复制此问题的步骤:
我做过其他测试,但找不到问题。请参阅下面的一些方法
根据测试结果,我认为问题是目录本身(/ tomcat / webapps / english / login)。每次我移动目录,一切正常。
请注意,我正在使用文本编辑器(notepad ++)更改Web应用程序而不是在eclipse上,使用TeamCity构建应用程序(编译得很好),服务器在linux下运行,我无法访问构建脚本但我相信ANT被用作建设者
所以我的问题是,是什么导致了这个问题?要使特定目录中的所有文件都能查找类?
非常感谢任何线索/帮助。我已经在这个问题上工作了几天。它令人难以置信
干杯!
答案 0 :(得分:0)
我会检查与PS -ef一起使用的类路径并查找该过程。错误日志应指向特定的类。这两条线索可以帮助确定是配置还是战争问题。
我看到的一种可能性是在tomcat配置文件中,显式定义了允许的路径。此外,配置文件可以将特定路径映射到java类。
答案 1 :(得分:0)
找到我自己问题的答案。问题起源于Tomcat。 Web服务器将JSP文件转换为.java文件,然后编译它。由于一些奇怪的原因,Tomcat没有为特定文件夹中的所有文件执行此操作。
解决方案是进入Tomcat的工作文件夹,向下钻取,直到看到您的webapp的名称并删除该文件夹。这将迫使Tomcat重建所有访问过的页面。
更安全的方式(对我不起作用。没有删除工作文件夹中的webapp)是登录Tomcat并取消部署webapp。这应该删除tomcat工作文件夹中的webapp文件夹。
希望这对遇到类似问题的人有帮助