jar 파일 외부에서 구성 파일을 읽을 수있는 jar 파일을 만들려고합니다. 가급적이면 jar 파일이있는 디렉토리에서 확인하십시오. 내 디렉토리 구조는 다음과 같습니다 :jar 파일 외부에서 config 파일을 읽습니다.
/src/main/resources/config
나는 mvn 프로젝트를 실행하여 jar 파일을 만듭니다. 나는 그러나 받는다는 조립 플러그인을 연구 한 나는 그것의 모든 다른 구성을 시도하고 내가 할 수 없습니다/대상/설정에
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.expedia.e3.qm.perforce.audit.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>config/config.xml</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>**/config/</exclude>
</excludes>
</configuration>
</plugin>
지금 내가 수동에서/목표 내 config 폴더를 이동하고/클래스/설정/target/config에만 출력하도록하십시오. /target/audit-1.0/config 여기서 audit-1.0은 내 maven 프로젝트 이름입니다.
내 프로그램을 디버깅하고 maven 프로젝트를 빌드/설치하려면 Intellij IDEA를 사용하고 있습니다. 코드에서
내가 명령 줄에서 실행할 때 나는 내가 IDE에서 실행할 때 작동
InputStream stream = Class.class.getResourceAsStream("/config/config.xml");
를 통해 파일에 액세스하려고 :
java -jar ./audit-1.0.jar
그것은이를 던졌습니다 "inputStream"에 액세스하려고 시도한 후 오류가 발생했습니다. : /config/config.xml은 "/config/config.xml"이되어야 함을 이해합니다. int를 "/target/audit-1.0.jar!/config/config.xml"로 변경하십시오. 그러나 "/target/config/config.xml"을 가리키고 싶습니다.
아이디어가 있습니까? 이것은 가능한가?
* "jar 파일 외부에서 구성 파일을 읽을 수있는 jar 파일을 만들려고합니다."* Jar 파일에 포함시키지 않는 이유는 무엇입니까? –
jar 파일을 다시 컴파일하지 않고 릴리스 한 후 프로그램의 구성을 편집 할 수 있기를 원합니다. –
* "다시 컴파일하지 않고도"* 새 항아리를 만드는 것은 거기에 들어가는 코드를 다시 컴파일하는 것과 같은 것이 아니라는 점에 유의하십시오. OTOH 일반적으로 config와 같은 리소스를 넣을 것입니다. 자바 웹 스타트 (Java Web Start) (http://stackoverflow.com/tags/java-web-start/info)는 별도의 Jar로이 부분 만 업데이트 할 수 있습니다. –