2017-10-20 14 views
0

의 폴더를 사용 나는 내 application.jar에는의 MANIFEST.mf 파일에서 다음 디렉토리 구조JAR 매니페스트 클래스 경로 대신 항아리

--conf 
| | 
| --foo.properties 
| 
--lib 
    | 
    --application.jar 

에게이 나는 다음과 같은 항목이 있습니다 단지 내부 클래스에서 Class-Path: ../conf/

을 나는 다음과 같은 코드를 사용하여 foo.properties을 클래스 패스 자원으로 파일을로드하려고 (항아리의 주요 방법으로 불림)

URL properties = this.getClass().getClassLoader().getResource("foo.properties"); 

그러나 클래스 경로에서 자원을 찾을 수 없습니다. Jar 매니페스트에서 Class-Path 속성이 작동하지 않는 이유는 무엇입니까? 그것이 애플리케이션 클래스 로더 클래스 패스에 어떤 영향을 미치는지 오해 한 적이 있습니까?

나는이 일을해야

java -jar application.jar

답변

1

다음 명령을 사용하여 응용 프로그램을 실행하고 있습니다. 확실하지 않은 경우 귀하의 MANIFEST.mf의 형식이 올바른지 확인하십시오. 나는 메이븐 (Maven)과 함께 광산을 만들었고 작동한다. 이것은 당신은 완전한 예를 here을 찾을 수 있습니다

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Built-By: john.doe 
Class-Path: ../conf/ 
Created-By: Apache Maven 3.3.9 
Build-Jdk: 1.8.0_92 
Main-Class: com.basaki.misc.clazzpath.FindResource 

, 내 MANIFEST.mf이 같은 모습입니다.