getResource 在一台服务器上返回 null 但在另一台服务器上不返回
Posted
技术标签:
【中文标题】getResource 在一台服务器上返回 null 但在另一台服务器上不返回【英文标题】:getResource returns null on one server but not on the other 【发布时间】:2020-05-27 18:47:31 【问题描述】:我在两个不同的服务器上运行 2 个 tomcat 实例。我在他们两个上部署了相同的战争文件,但它的工作方式不同。
在实例 1 上一切正常,而在实例 2 上我得到 NullPointerException,因为“listAllConfigIds”方法中的变量“resource”为 NULL。
public List<String> listAllConfigIds()
URL resource = SomeClass.class.getResource("./");
LOG.debug("Loading from resource " + resource);
return Arrays.asList(new File(resource.getPath()).list()).stream().filter(s -> !s.toLowerCase().contains("."))
.collect(Collectors.toList());
我在 AIX 上使用相同的 vm args 启动了 tomcat。任何想法可能是什么问题?
【问题讨论】:
因此,该资源很可能存在于一台服务器上,而不是另一台服务器上。 但是我可以看到webapps文件夹中的资源。文件夹是相同的。 这两个环境是否在不同的系统上运行?例如一个是 Windows,另一个是 Linux? 都是 AIX 机器 你用同样的方式构建它们?没有构建过程差异? 【参考方案1】:我现在构建的是绝对路径,而不是相对路径:
SomeClass.class.getName().substring(0, SomeClass.class.getName().lastIndexOf(".")).replace(".", "/");
去掉最后一部分并替换“。”带“/”
【讨论】:
以上是关于getResource 在一台服务器上返回 null 但在另一台服务器上不返回的主要内容,如果未能解决你的问题,请参考以下文章
urllib3.exceptions.NewConnectionError 错误在一台机器上处理但不在另一台机器上