0

我有一个 EAR 项目,我使用getContextClassLoader.getResource. 但是当我的 WAR 模块和 EJB (.jar) 模块具有相同名称(但内容不同)的资源时,我总是从 EJB 获取资源,而不是从 Web 模块获取资源(来自 EJB 的同名资源会覆盖来自 .WAR 的资源)。

这件事与上下文类加载器有关吗?

UPD:项目结构:

 -EAR
     -- WEBAPP.WAR
                  ---classes
                             ----my.properties

     -- EJB.JAR
                  ---classes
                            ---- my.properties

webapp.warejb.jar我有相同的文件(my.properties)。

但是当我使用

Thread.currentThread().getContextClassLoader().getResourceAsStream("My.properties")

webapp.war我总是My.propertiesEJB.JAR

4

1 回答 1

0

您必须将耳朵的类路径或依赖项更改为WEBAPP.WAR,然后是EJB.JAR

就像您使用上下文类加载器时一样,它使用 EAR 的 ClassLoader 并尝试My.properties使用其 Classpath 查找资源并首先在 EJB.jar 中找到依赖项,因此使用其文件。

因此,您必须将顺序更改为 WEBAPP.war,然后更改为 EJB.jar

于 2012-12-04T11:42:12.120 回答