안녕하세요 저는 loader()
메서드를 갖는 ConfigLoader
클래스를 가진 외부 jar에 대한 종속성이있는 Maven 프로젝트에서 작업하고 있습니다. 리소스를로드하는 동안 외부 jar의 클래스가 예외를 throw합니다.
public class ConfigLoader {
public void initialize() {
loader();
}
private static void loader() {
URL configURL = ConfigLoader.getClass().getResource("runtimeConfiguration.xml");
//some other method calls to which configURL is an argument.
}
//other methods of ConfigLoader class
}
및 디렉토리 구조는 다음과 같이이다 -
src
|...main
|.......java
|.......resources
|................dev
|................prod
모두 dev에와 자극이 runtimeConfiguration.xml 라는 이름의 파일이 클래스를 사용하는 코드는
public class Application {
private Application application;
public static void main(String []args){
application = new Application();
application.invokeConfigLoader();
//additional code
}
private void invokeConfigLoader() {
configLoader.initialize();
}
}
입니다
내가받는 오류는
입니다.devpath 폴더를 classpath에 추가하려고 시도했지만 여전히 같은 오류가 발생했습니다. 나는 리눅스 터미널에서이 코드를 실행하려면, 그리고 명령은 내가 (내 모든 exernal 항아리와 자원 폴더를 받는다는 빌드 후 앉아) 트렁크 디렉토리에서 제공하고있다 - 나는 또한 인 IntelliJ 2017.2 등을 사용하고
java -cp /resources/dev/*:configuration-loader.jar
시도 resources/dev 폴더를 모듈 종속성으로 추가하려면 동일한 오류가 발생합니다. 리소스 폴더는 프로젝트 구조 설정을 통해 라이브러리로 추가됩니다. 나는 많은 것을 찾으려고 노력했지만이 문제로 어떤 질문도 찾지 못했습니다. 이 환경 기반 개발에 익숙하지 않아서 친절하게 도와주세요. 감사합니다.
답장을 보내 주셔서 감사합니다. 이 getResource를 호출하는 코드는 외부 항아리에서 가져 오므로 변경할 수는 없습니다. – humblecoder
그런 다음 파일을'ConfigLoader' 패키지 이름과 같은 경로에 넣으십시오. 예를 들어'ConfigLoader'가'com.yourcompant.config' 아래에 있다면'com/yopurcompany/config' 디렉토리 아래에'runtimeConfiguration.xml'을 넣으십시오. – tsolakp
config가'src/main/java/com/yourcomapany/config'에 있고'runtimeConfiguration.xml' 파일이'src/main/java/resources'에 있으면'resources' 디렉토리는 자원 루트로 표시됩니다. 그럼 효과가 있을까요? – humblecoder