【问题标题】:getResource returns null on one server but not on the othergetResource 在一台服务器上返回 null 但在另一台服务器上不返回
【发布时间】:2025-12-11 16:05:03
【问题描述】:

我在两个不同的服务器上运行 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 机器
  • 你用同样的方式构建它们?没有构建过程差异?

标签: java tomcat servlets aix


【解决方案1】:

我现在构建的是绝对路径,而不是相对路径:

SomeClass.class.getName().substring(0, SomeClass.class.getName().lastIndexOf(".")).replace(".", "/");

去掉最后一部分并替换“。”带“/”

【讨论】:

    最近更新 更多