2017-11-20 23 views
0

현재 Java Enterprise 프로젝트 형식의 이전 WAS-8을 Liberty Profile 17로 마이그레이션하는 동안 문제가 있습니다. richfaces jar에서 css/js 파일을 찾을 수 없습니다. 브라우저에서 페이지를로드, WLP17는 로그 파일에 다음과 같은 경고를 기록합니다 Websphere Liberty 프로파일 : [WARNING] SRVE0190E : EAR 파일에 포함 된 라이브러리에서 파일을 찾을 수 없습니다.

[WARNING ] SRVE0190E: File not found: /org.richfaces.resources/javax.faces.resource/org.richfaces.staticResource/4.5.17.Final/PackedCompressed/org.richfaces/jquery.js 

내가 받는다는을 사용하여 프로젝트를 빌드하고이 같은 부모 치어의 richfaces 의존성 정의 : 다음

<dependency> 
    <groupId>org.richfaces</groupId> 
    <artifactId>richfaces</artifactId> 
    <version>4.5.17.Final</version> 
</dependency> 

을 , 나는 여러 개의 EJB와 WAR 프로젝트가 함께 EAR 파일로 묶여있다.

<dependency> 
    <groupId>org.richfaces</groupId> 
    <artifactId>richfaces</artifactId> 
    <scope>provided</scope> 
</dependency> 

마지막 EAR 치어 라이브러리는 EAR 파일에 포함되도록 richfaces에 대한 종속성을 가지고 richfaces를 이용한 WAR 프로젝트 제공 범위와 richfaces 종속성을 포함한다. 어떤 이유로 든 자유가 부자 단지에 위치한 자원을 찾을 수 없습니다.

생성 된 EAR ​​파일을 검사했는데, richfaces 라이브러리가 포함되어 있습니다. 그런 다음, richfaces 라이브러리를 검사했고 발견되지 않은 파일도 포함했습니다.

더 이상의 설정이 필요합니까?

+1

당신이 이해가 정적 인 웹 리소스를 제공하기 위해 노력하고 있기 때문에 WAR 프로젝트에서 richfaces 라이브러리를 패키징하십시오. 너처럼 AR 수준이야. – wtlucy

+0

richfaces 라이브러리를 각 WAR 프로젝트에 정확히 패키징해야하는 이유는 무엇입니까? 필자의 이해를 돕기 위해 EAR 파일 내에 모든 라이브러리와 아카이브 모자가 들어있는 리소스가 표시되어 있습니다. 런타임 예외없이 JSF 페이지에서 richfaces 태그를 사용할 수 있습니다. – Joko

+0

또 다른 재미있는 관찰을했습니다 : 라이브러리 속성 (library = "css/foo")으로 참조 된 하위 폴더 (예 : resouorces/css/foo/bar.css)에있는 정적 리소스 (js 및 css 파일과 같은) 뿐만 아니라 발견되지 않았다. 나는 그들을 css 폴더로 옮겼고 지금 그들은 발견된다. – Joko

답변

1

META-INF/resources /에서 정적 파일을 제공 할 것으로 예상되는 JAR 라이브러리는 웹 응용 프로그램 WAR에 번들로 제공되어야합니다. 서블릿 3.0 스펙에서 4.6 절은 관련 :

의 getResource과 같이 getResourceAsStream 방법을 선도 와 문자열을 "/"컨텍스트의 루트에 자원 상대의 경로를 제공합니다 인수로 또는 ... LIB 웹 애플리케이션의 WEB-INF/디렉토리 내부의 JAR 파일의 META-INF/resources 디렉토리에 상대적으로

0

@ wtlucy의 의견이 내 문제를 해결했습니다. 고맙습니다.

이러한 라이브러리가 필요한 WAR 파일에 richfaces 라이브러리를 넣었습니다.