Eclipse에서 Maven 프로젝트 인 main()
메서드를 사용하고 있습니다. 프로젝트에 포함 된 리소스를 사용하는 종속성이 있습니다. 즉, 파일에 /src/main/resources
이 포함되어 있습니다. 프로젝트에서 실행 가능한 JAR 파일을 만들고 싶습니다. 문제는 - 임베디드 리소스를로드하는 방법에 따라 - java -jar my.jar
을 사용하여 실행 가능한 JAR로 프로젝트를 실행하거나 Eclipse에서 직접 실행할 수 있지만 모두이 아니므로이 경로가 두 가지 경우에서 자원이 분명히 다릅니다./src/main/resources에서 Eclipse와 실행 가능한 JAR에서 직접 작동하는 방법으로 리소스를로드하는 방법은 무엇입니까?
예를 들어, 다음과 같이 나는 자원을로드 할 수
// Loads /src/main/resources/script.rb;
// Works when run directly from Eclipse; throws an exception when run as a runnable JAR
InputStream resource = this.getClass().getResourceAsStream("/script.rb");
이 방법, 나는 성공적 이클립스에서 직접 프로젝트를 실행할 수 있습니다. Eclipse의 Export → Runnable JAR file
을 사용하여 실행 가능한 JAR을 만들면 리소스가 JAR의 루트에있는 resources
폴더에 저장되므로 java -jar my.jar
으로 실행하려고하면 위의 코드가 실패합니다.
// Works when run as 'java -jar my.jar', fails when run from Eclipse.
InputStream resource = this.getClass().getResourceAsStream("/resources/script.rb");
지금 내 보낸 JAR 파일이 잘 작동
,하지만 난 더 이상 성공적으로 이클립스에서 직접 자바 응용 프로그램으로 내 프로젝트를 실행할 수 없습니다 : 나는/resources
폴더를 가리 키도록 코드를 변경하여이 문제를 해결할 수 있습니다.
리소스를로드하는 데 대한 여러 게시물을 읽었지만 지금까지 도움이 된 것은 없습니다.
이 문제를 해결하고 두 경우 모두 올바르게 작동하는 방법으로 리소스를로드 할 수 있습니까? 아마도 resources
폴더 대신에 JAR 루트에 리소스를 넣도록 Eclipse를 설득하는 것이 효과적 일지 모르지만 이것이 가능한지 확실하지 않습니다.
src/main/resources는 Maven 디렉토리 구조의 일부이지만 Maven을 사용하여 jar 파일을 만들지는 않습니다. 이클립스 내보내기 jar 함수를 사용해야합니까? – Gimby
@Gimby 원격 시스템에서 JAR을 테스트하는 것이 편리하기 때문에 내보내기 기능을 사용하고 있습니다. – w128
"내보내기 → Runnable JAR 파일은 JAR의 루트에있는 resources 폴더 안에 script.rb 리소스를 넣습니다."That 's WRONG !!! 'src/main/resources'의 내용은 항아리의 루트에 있어야합니다. 당신은 maven이 jar 파일을 생성하도록해야만한다. –