【发布时间】:2018-05-03 18:07:25
【问题描述】:
目前,我在将 Java Enterprise 项目从旧 WAS-8 迁移到 Liberty Profile 17 时遇到问题。在我的情况下,环境无法在richfaces jar 中找到一堆 css/js 文件。在浏览器中加载页面,WLP17 将这样的警告写入日志文件:
[WARNING ] SRVE0190E: File not found: /org.richfaces.resources/javax.faces.resource/org.richfaces.staticResource/4.5.17.Final/PackedCompressed/org.richfaces/jquery.js
我使用 maven 构建项目,并在父 pom 中定义了 Richfaces 依赖项,如下所示:
<dependency>
<groupId>org.richfaces</groupId>
<artifactId>richfaces</artifactId>
<version>4.5.17.Final</version>
</dependency>
然后,我将几个 EJB 和 WAR 项目打包到一个 EAR 文件中。使用 Richfaces 的 WAR 项目包含一个 Richfaces 依赖项,提供范围:
<dependency>
<groupId>org.richfaces</groupId>
<artifactId>richfaces</artifactId>
<scope>provided</scope>
</dependency>
最后,EAR pom 依赖于richfaces,以确保该库包含在 EAR 文件中。由于任何原因,liberty 无法找到位于richfaces jar 中的资源。
我检查了创建的 EAR 文件,它包含richfaces 库。然后,我检查了 Richfaces 库,其中还包含未找到的文件。
我还有什么需要做的配置吗?
【问题讨论】:
-
由于您尝试提供静态 Web 资源,因此将 Richfaces 库打包到 WAR 项目中可能是有意义的——而不是像您似乎正在做的那样在 EAR 级别。
-
为什么要将richfaces 库打包到每个WAR 项目中?据我了解,它是可见的,并且它的资源在 EAR 文件中包含的所有库和档案的范围内。我可以在 JSF 页面中使用 Richfaces 标签,而不会出现运行时异常。
-
我做了另一个有趣的观察:一些项目的静态资源(如 js 和 css 文件)放置在使用 library-attribute (library) 引用的子文件夹(如 resouorces/css/foo/bar.css) ="css/foo") 也没有找到。我将它们移动到 css 文件夹,现在它们被找到了。
-
我认为这一定是我的 WLP 17 的任何错误配置问题或错误 ...
-
我刚刚测试了你的想法,@wtlucy。现在可以了。我无法想象为什么,但也许我最终会找到任何解释。
标签: maven jakarta-ee websphere-liberty open-liberty