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 错误在一台机器上处理但不在另一台机器上

Chef Recipe 在一台服务器上运行迁移

Laravel 视图显示在一台服务器上的缓存中,但在另一台服务器上工作正常

更改作为主键方的字段时出错,仅在一台服务器上

php 在一台机器上解析失败,但在另一台机器上解析失败

无法在一台特定服务器上部署战争