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

Java 使用ClassLoader.getResourceAsStream加载资源在特定计算机中不起作用,java,jakarta-ee,tomcat,classloader,Java,Jakarta Ee,Tomcat,Classloader,我有一个供应商应用程序,它部署在Windows2008服务器上的Tomcat6中。该应用程序在该服务器上不工作,但当我将Tomcat复制到另一台运行Windows7的机器上时,它正在工作 当我分析日志时,ClassLoader.getResourceAsStream在Windows 2008服务器中返回空值,但在Windows 7计算机中不返回空值。我检查了tomcat webapp文件夹完全控制赋予运行tomcat服务器的用户的windows文件权限。这可能是什么原因呢 PS:这是一个供应商应

我有一个供应商应用程序,它部署在Windows2008服务器上的Tomcat6中。该应用程序在该服务器上不工作,但当我将Tomcat复制到另一台运行Windows7的机器上时,它正在工作

当我分析日志时,ClassLoader.getResourceAsStream在Windows 2008服务器中返回空值,但在Windows 7计算机中不返回空值。我检查了tomcat webapp文件夹完全控制赋予运行tomcat服务器的用户的windows文件权限。这可能是什么原因呢

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

当我分析日志时,
ClassLoader.getResourceAsStream
在Windows 2008 server bot中返回
null
,而不是在Windows 7计算机中

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

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

这是一个棘手的问题。以下是一些需要检查的内容:

  • 与“getResourceAsStream”一起使用的路径是否正确

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

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

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

  • 这是“同形文字”的问题吗;i、 e.不同但在显示时看起来相同的Unicode字符

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


这两台机器是否有相同的java版本?在Windows 2008中,它的1.60y17和Windows 7中的1.60Y31是否考虑更新Windows 8上的版本?另一个要检查的是服务器上的环境变量,看看有什么不同。这类问题通常发生在类路径、环境变量或java版本出现问题时。看看两台服务器上是否都定义了CATALINA_HOME、JAVA_HOME和类路径。为什么不联系供应商解决这个问题?