【问题标题】:Tomcat is not loading new class(compiled version of .java file and not JSP file)Tomcat 未加载新类(.java 文件而非 JSP 文件的编译版本)
【发布时间】:2014-02-06 13:33:00
【问题描述】:

在 Linux 中,Tomcat 不加载新类(.java 文件的编译版本,而不是 JSP 文件)。

我做了什么:

  1. 重写的类文件。
  2. 停止并启动服务器,预期行为没有变化。
  3. 删除旧文件并放置新文件。
  4. 停止并启动服务器,预期行为没有变化。
  5. 更改了源、编译和覆盖的类 文件。
  6. 停止并启动服务器,预期行为没有变化。

我的部署采用分解格式。在 Windows 8 下也反映了同样的变化。早些时候,我确实更新了几个类(.java 文件的编译版本,而不是 JSP 文件)并重新启动了反映预期变化的服务器。

环境:Amazon Linux AMI 2013 版下的 Tomcat 7.0

请帮助解决问题。提前致谢!

【问题讨论】:

  • 您是否构建并部署了包含修改后的类的新 WAR 文件?还是您只是直接在 Tomcat 的 WAR 临时提取副本中替换类文件?
  • 旧查询。请查看此链接 [Linux 环境中的 Tomcat 工作目录][1] [1]:stackoverflow.com/questions/11246392/…
  • 如 OP 中所述,问题与类文件(.java 文件的编译版本而不是 .jsp 文件)有关。

标签: java linux class tomcat7


【解决方案1】:

每当你遇到这种奇怪的tomcat问题时,首先要做的就是停止tomcat,删除工作目录,删除部署目录。然后重新部署war文件并重启。

在进一步排除故障之前始终执行此操作,因为它通常可以解决奇怪的部署问题。

【讨论】:

  • COMMENT 1/2:我接受你的回答,虽然我最终会做同样的事情,但是影响最小的方法。首先,正如 OP 中提到的,问题出在类文件(.java 文件的编译版本而不是 JSP)所以,它没有删除“工作”目录的影响。 'work' 目录仅用于存储从 .jsp 文件生成的类文件。其次,我提到过,我的部署是爆炸式的。重新部署 war 文件或整个部署单元在实时/生产环境中是一项成本高昂且有风险的任务。
  • COMMENT 2/2:所以,我建议一种影响最小的方法 - 用新编译的版本覆盖文件所在的目录。示例:如果文件位于 com/myCompay/department/sub-department/Employee.class 则覆盖部门或子部门目录,并重新启动服务器。希望这对其他人也有帮助。
猜你喜欢
  • 1970-01-01
  • 2020-01-27
  • 2022-01-23
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多