2011-08-01 4 views
1

나는 OC4J에서 EJB 코드에서 작동하지 않는 다음 코드 snipet했습니다. 출력은getClass() getClassLoader를()의 getResource() OC4J 응용 프로그램 서버에서 작동하지 않습니다

String name = getClass().getPackage().getName(); 
name = name.replace('.','/'); 
URL url = this.getClass().getClassLoader().getResource(name); 
File directory = new File(url.getFile()); 
System.out.println("url.getFile() : " + url.getFile()); 

if (directory.exists())  // returns false!, why?? 
{ 
    System.out.println("directory.exists() : " + directory.exists()); 

} 

입니다 :

url.getFile() : /C:/oc4j_extended_101330/j2ee/home/applications/MyEAR/MyEJB.jar!/com/me/a/service/impl/helper/Logger 

그러나 독립형 모드에서

는, 출력은 다음 URL 알 수 있듯이, 그것은 JAR 파일 내부의 위치를 ​​가리키는 때문에

url.getFile() : /D:/eclipse/workspace/MyEJB/build/classes/com/me/a/service/impl/helper/Logger 
directory.exists() : true 

답변

3

그것은 작동하지 않습니다 파일 시스템의 기존 위치가 아닙니다 : /C:/oc4j_extended_101330/j2ee/home/applications/MyEAR/MyEJB.jar!/com/me/a/service/impl/helper/Logger은 기존 디렉토리가 아닙니다.

대부분의 경우 리소스가 jar 파일에 포함되므로 파일 시스템의 위치를 ​​가리키는 클래스 로더에서로드 된 리소스에 의존해서는 안됩니다.

관련 문제