2011-08-26 3 views
1

실제로 다음 코드를 사용하여 내 자바 웹 응용 프로그램에 OWL 파일을로드하고 사용하지 않고 다른 패키지에있는 파일에 액세스하는 방법 : content.owl 얻을 것입니다 나는이 같은 패키지에 Dummy.class을 만들어더미 클래스

InputStream is = Dummy.class.getResourceAsStream("content.owl"); 

을 이 파일에 대한 액세스 권한.

더미 클래스가 필요없이 직접 content.owl을로드하는 (리팩터링) 방법이 있습니까?

답변

2

나는 컴파일 된 파일이있는 출력 폴더의 위치에 따라 상대 경로를 지정하여 모든 클래스에서 해당 리소스를 가져올 수 있어야한다고 생각합니다.

예컨대 초기 PROJ/SRC/A/B/content.owl에게 패키지의 리소스 파일 I이 리소스 패키지 PROJ/SRC/A/B/C/D/MyClass의 인 액세스 클래스. java. 프로젝트를 빌드 한 후 내 실행 파일을 bin 폴더로 이동하고 리소스에 액세스하는 클래스는 proj/bin/a/b/c/d/MyClass.class 디렉토리로 이동하고 리소스는 proj/bin/a/b/content.owl.

그리고 폴더 내 프로젝트의 클래스 경로에 출력 폴더로 지정되어, 나는 코드와 리소스에 액세스 할 수 있습니다 좋은 소리

InputStream is = MyClass.class.getResourceAsStream("https://stackoverflow.com/a/b/content.owl"); 
+0

합니다. 그러나이 리펙터는 안전하지 않습니까? content.owl의 이름이 변경되면 어떻게 될까요? 어떻게 런타임 오류를 방지합니까? –

+0

글쎄,이 리소스를로드 할 수 없다는 오류가 상승해도 허용되지 않는 경우 입력 스트림을 검사 할 수 있다고 생각합니다. 허용되지 않는 경우 추가 매개 변수 또는 구성으로 리소스 경로를 제공하거나 그러한 이름 변경이 가능한 경우 다른 해결 방법이있을 수 있습니다. 나는 결국 당신이 자원의 새로운 이름을 알아야한다고 생각한다. – suat