我有一个供应商应用程序,它部署在Windows 2008服务器上的Tomcat 6中。此应用程序无法在该服务器中运行,但是当我将Tomcat复制到另一台运行Windows 7的计算机时,它正在运行。
当我分析日志时,ClassLoader.getResourceAsStream在Windows 2008服务器中返回null,但在Windows 7计算机中没有。我检查了windows文件权限,tomcat webapp文件夹完全控制已经给用户wihr运行tomcat服务器。可能是什么原因。
PS:这是一个供应商应用程序,因此我无法控制代码。
答案 0 :(得分:0)
当我在Windows 2008服务器机器人中分析
ClassLoader.getResourceAsStream
正在返回null
的日志时,不在Windows 7计算机中。
这是在无法找到命名资源的情况下记录的行为。
我检查了windows文件权限,tomcat webapp文件夹完全控制权给了运行tomcat服务器的用户。可能是什么原因。
这是一个棘手的问题。以下是一些要检查的事项:
您使用“getResourceAsStream”的路径是否正确?
资源路径名是否包含非ASCII(或特殊)字符,而不是可能导致Windows路径名查找行为异常?
自上次更改WAR文件以来,webapp是否已成功重新部署(即已停止并启动)?
您是否已将Tomcat配置为不展开WAR文件?如果是这样,那么问题可能是资源不再出现在WAR文件中......尽管出现在(先前扩展的)webapp目录中。
这是“同性恋”的问题;即Unicode字符不同但显示时看起来相同。
病毒检查程序(或类似程序)是否可能锁定或删除文件?