使用ClassLoader.getResourceAsStream加载资源在特定计算机中不起作用

时间:2014-07-20 04:24:06

标签: java java-ee tomcat classloader

我有一个供应商应用程序,它部署在Windows 2008服务器上的Tomcat 6中。此应用程序无法在该服务器中运行,但是当我将Tomcat复制到另一台运行Windows 7的计算机时,它正在运行。

当我分析日志时,ClassLoader.getResourceAsStream在Windows 2008服务器中返回null,但在Windows 7计算机中没有。我检查了windows文件权限,tomcat webapp文件夹完全控制已经给用户wihr运行tomcat服务器。可能是什么原因。

PS:这是一个供应商应用程序,因此我无法控制代码。

1 个答案:

答案 0 :(得分:0)

  

当我在Windows 2008服务器机器人中分析ClassLoader.getResourceAsStream正在返回null的日志时,不在Windows 7计算机中。

这是在无法找到命名资源的情况下记录的行为。

  

我检查了windows文件权限,tomcat webapp文件夹完全控制权给了运行tomcat服务器的用户。可能是什么原因。

这是一个棘手的问题。以下是一些要检查的事项:

  • 您使用“getResourceAsStream”的路径是否正确?

  • 资源路径名是否包含非ASCII(或特殊)字符,而不是可能导致Windows路径名查找行为异常?

  • 自上次更改WAR文件以来,webapp是否已成功重新部署(即已停止并启动)?

  • 您是否已将Tomcat配置为不展开WAR文件?如果是这样,那么问题可能是资源不再出现在WAR文件中......尽管出现在(先前扩展的)webapp目录中。

  • 这是“同性恋”的问题;即Unicode字符不同但显示时看起来相同。

  • 病毒检查程序(或类似程序)是否可能锁定或删除文件?