gpt4 book ai didi

web-applications - 从 WAR 加载非 Java 资源

转载 作者:搜寻专家 更新时间:2023-11-01 02:47:55 24 4
gpt4 key购买 nike

我正在尝试从特定的 WAR 文件加载非 Java 资源。这就是我试图实现这一目标的方式:

SomeClassInMyWarFile.class.getClassLoader().getResource("path/file.txt");

在 JBoss 4 中运行时完美运行 - 其中 getClassLoader() 返回 WebAppClassLoader 的实例。

但是当我尝试在 JBoss 6 下运行这段代码时,我得到了一个 BaseClassLoader 的实例,作为返回,它无法在该 WAR 中找到资源。

出于调试目的,当我对两者都调用 getResource("./") 时,结果如下:

  • JBoss 4

    "file:/C:/path/to/my/WarFile.war/"
  • JBoss 6

    "file:/C:/jboss6/bin/a1k2347-kpm5pr-hjfoi81u-1-hjfoj582-dz/"

    “/a1k2347-kpm5pr-hjfoi81u-1-hjfoj582-dz/”根本不存在。

我觉得我没有正确设置我的 jboss6,或者我在这里遗漏了另一件重要的事情..任何想法可能会发生什么?或者甚至有人能够解释我做错了什么?

最佳答案

好吧,我似乎一直缺少对 WAR 文件应该如何工作的一些基本理解。

在我了解到只有 WEB-INF/classesWEB-INF/lib 被添加到类加载器的类路径之后,没有 WAR文件的根目录,解决问题很简单:

作为快速修复,我将 path/file.txt 更改为 ../../path/file.txt,因此资源路径是相对的到 WEB-INF/classes

这确实很丑陋。总有一天,我会花一些时间来增强我们的构建过程,这样资源就会自动移动到类路径上的目录中。

关于web-applications - 从 WAR 加载非 Java 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17788760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com