2013-03-28 2 views
0

Java maven 웹 애플리케이션을 작성했습니다. 이제 내 문제는 리소스 번들 또는 속성 클래스를 사용하여 속성 파일에 액세스해야한다는 것입니다. 하지만이 속성 파일은 webapp/resources 폴더에 있습니다. 즉, js 및 css 파일과 같은 디렉토리에 있습니다.빌드 경로에없는 java의 액세스 특성 파일

나는이 유틸리티 방법이 있지만 필요한 경우 내가 새로 작성할 수 있습니다

public static ResourceBundle getBundle(String baseName, String absolutePath) { 
    File file = new File(absolutePath); 
    ResourceBundle bundle = null; 
    try { 
     URL[] urls = { file.toURI().toURL() }; 
     ClassLoader loader = Thread.currentThread().getContextClassLoader(); 
     bundle = ResourceBundle.getBundle(baseName, Locale.getDefault(), loader); 
    } catch (MalformedURLException e) { 
    } 
    return bundle; 
} 

내 프로젝트 구조 :

-project 

-------src 

    --------main 
      ---------java 
      ---------resources 
      ---------webapp 
        ----------resources 
           -----------app.properties 
           -----------script.js 

답변

1

당신의 속성 파일이 웹 응용 프로그램 루트에 상대적인 것 같다입니다. 이 경우, 당신은 자신에게 HttpURLConnection의를 발급 할 수 있습니다 getResource() in ServletContext

+0

그러나 어떤 서블릿에서도 사용하지 않습니다. 그것은 간단한 자바 클래스입니다. –

+0

그러나 클래스는 웹 응용 프로그램에서 사용됩니까? 그런 다음 ServletContext를 매개 변수로 메소드에 전달할 수 있습니다. 또는 ResourceBundle이 필요한 곳에서 ServletContext를 사용하고 URL을 메소드에 전달하십시오. 이것은 obvisouly 유틸리티 메서드의 서명을 변경해야합니다. – NilsH

+0

나는 그것을 일정하게하려고 노력했다. 이처럼 .. public static final ResourceBundle MIME_TYPES = SVNUtil.getMimeTypes(); –

0

을 사용할 수 있습니다 (사용자 도메인/MyApp를/자원/app.properties)하지만 이것은 일반적인 접근 방식이다 못생긴 솔루션

이다라고 말하고 싶지만 app.properties를 classpath로 재배치하십시오 (예 : src/main/resources). Spring을 사용한다면 ClasspathResource를 사용할 수 있습니다. 아니면 당신이 게시물 읽을 수있는 모든 사용자가 의미 할 수 How to really read text file from classpath in Java

마음 퍼팅 app.properties에 보관하는 것은 나는 마침내 내 웹 애플리케이션/자원 폴더를 추가하여 작업받은 app.properties

+0

실제로 클래스 패스에있는 파일을 이미 읽었습니다. ..하지만이 파일은 js에서이 파일을 사용하여 아약스 호출을 사용하기 때문에 여기에 있어야합니다 .. 또한 중요한 데이터가 들어 있지 않습니다. –

0

를 읽을 수있다 classpath에. classpath에 추가 한 후에는 간단하게 다음과 같이 처리 할 수 ​​있습니다. -

ResourceBundle bundle = ResourceBundle.getBundle(bundleName);