linux - 特定文件夹中的 java.lang.ClassNotFoundException

标签 linux jsp tomcat

几个月前,我正在为客户更改此 Web 应用程序。它是一个以 tomcat 作为 Web 服务器的 JSP Web 应用程序。我已经进行了更改、测试(当然),并将应用程序留给了客户。他们回来找我并提到网站的特定区域无法正常工作。我进去检查了该区域,确实它没有用,但几个月前我进行更改时它还在用。

遇到一个很不寻常的问题。相关目录 (/tomcat/webapps/website/english/login) 中的每个页面都会抛出 java.lang.ClassNotFoundException。

为了解决此问题,我尝试创建一个包含“hello world”且没有编码的空白 JSP,但仍然抛出 java.lang.ClassNotFoundException。我在该目录之外创建了相同的 JSP 页面,这很好

为重现此问题所采取的步骤:

  1. 我进入有问题的目录 (tomcat/webapps/website/english/login)
  2. 创建一个名为 test.jsp 的 JSP 页面,该页面实际上只有“hello world”(无编码)
  3. 在浏览器上,我导航到 test.jsp。它抛出一个 java.lang.ClassNotFoundException
  4. 我从登录进入目录(tomcat/webapps/website/english)
  5. 创建一个名为 test2.jsp 的 JSP 页面,该页面仅包含“hello world”(无编码)
  6. 在浏览器上,我导航到 test2.jsp 页面。有用

我做了其他测试,但找不到问题所在。执行的一些方法见下文

  • 将网络应用程序移动到不同的目录 (tomcat/webapps/website2)。一切,包括/english/login 目录,都有效
  • 删除了 web 应用程序目录并重新创建了目录路径,仍然给我异常
  • 检查权限。有问题的目录与 Web 应用程序中的所有其他内容(包括文件)具有相同的权限

根据测试结果,我认为问题出在目录本身 (/tomcat/webapps/english/login)。每次我移动目录时,一切正常。

请注意,我正在使用文本编辑器 (notepad++) 对 Web 应用程序进行更改,而不是在 eclipse 上,使用 TeamCity 构建应用程序(编译良好),服务器在 linux 下运行,我无法访问构建脚本但我相信 ANT 被用作构建器

所以我的问题是,是什么导致了这个问题?要让特定目录中的所有文件来查找类?

非常感谢任何线索/帮助。几天来我一直在研究这个问题。令人难以置信

干杯!

最佳答案

我会检查正在使用 PS -ef 的类路径并查找进程。错误日志应该指向一个特定的类。这两条线索可以帮助确定是配置问题还是 war 问题。

我看到的一种可能性是,在 tomcat 配置文件中,明确定义了允许的路径。此外,配置文件可以将特定路径映射到 Java 类。

关于linux - 特定文件夹中的 java.lang.ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26131001/

相关文章:

java - 将 Ckfinder 与 ckeditor 和 JSP 结合使用

java - Tomcat 使用端口 :443 and doesn't with :80 despite of enabling firewall

c - 当我在构建中添加 lib 链接时出现段错误

php - 是否有可能在长时间运行的 PHP 进程中捕获/处理/检测系统时间何时更改?

java - 在 JSP 上创建目录树结构

tomcat - 如何在 AWS EC2 实例上扩展 Tomcat?

tomcat - 如何在 Tomcat 9 中的不同端口上部署多个 Web 应用程序?

linux - 重新安装 Linux 操作系统然后在 .sh 脚本中运行一堆命令,如果出现问题如何停止脚本?

c - 为什么Linux内核在preempt_schedule_irq中启用中断?

java - Struts 2 jQuery 插件 isSubscribe 不起作用