2017-12-21 45 views
1

logback.xml 파일에 logback.properties 파일이 표시되지 않는 것이 문제입니다.Java 실행 파일 jar logback-spring.xml에 logback.properties 파일이 표시되지 않습니다.

Maven을 사용하여 빌드 된 실행 가능한 jar 파일 (foo.jar)을 실행하려고합니다. foo.jar을 실행할 때 logback.properties 파일을 찾을 수 없으므로 실패합니다. 이 파일은 foo.jar 내에 존재하며 logback.xml 파일의 형제 파일입니다.

logback.properties 파일을 foo.jar 내에서 수동으로 아무런 문제없이 이동하려고했습니다. 그러나 jar가 외부에있는 파일의 복사본을 jar 파일의 외부에 jar 파일로 저장하면 jar 파일은 해당 파일을보고 시작합니다.

누군가 foo.jar이 속성 파일 자체를 들여다 보는 방법을 설명 할 수 있습니까?

예 : logback.xmllogback.properties 파일은 둘 다 'foo/bar'경로 아래의 foo.jar 파일에 있습니다.

속성 파일을 찾으려면 어떻게해야합니까?

사이드 노트 : 저는 Spring에 관해서 솔직히 알지 못하는 Spring Boot 프로젝트입니다. 그래서 그게 슬픔을 일으키는 장애물인지는 모르겠습니다.

logback.xml 파일이 Logback docs에서

<property file="logback.properties" /> 

답변

1

하여 logback.properties 파일을 참조

은 또한 대신 클래스 경로에 자원을 참조 할 수 있습니다 (정말 봄과는 아무 상관이 없습니다) 파일.

<configuration> 
    <property resource="resource1.properties" /> 
    ... snip ... 
</configuration> 

이 (당신이 메이븐을 사용하는 경우 그 SRC/메인/자원이다) 클래스 패스의 루트에서 속성 파일을 찾습니다하려고합니다. <property file="..."/> 구문은 파일 시스템에서 응용 프로그램의 현재 작업 폴더를 기준으로 파일을 찾는 것이므로 설명 된 것처럼 JAR 옆에 파일이 있으면 올바르게 찾습니다.

+0

다른 질문이 있습니다. 를 모두 지정하면 리소스가 항상 파일을 트럼프하거나 트럼프 리소스를 파일링하겠습니까, 아니면 마지막으로 정의 된 것이 될 것입니까? – Elijah

+0

시도해보십시오. 어떤 행동이 될지 잘 모르겠습니다. 각 도서관은 대개 올바른 행동이 무엇인지에 대한 자체 아이디어를 가지고 있습니다. 즉, 어떤 속성이 우선 순위를 차지하는 계층 구조가 있다고 생각하지 않기 때문에 "마지막으로 정의 된 것이 무엇이든"이라는 마지막 옵션이 가장 가능성이 높습니다. –

+1

마지막에 나열된 것이 무엇이든로드됩니다. 그러나 두 태그를 모두 사용하려면 두 파일이 있어야합니다. 그래서 'file'에 의해 참조 된 것이 시스템 상에 있어야하지만, 그냥 비워두면됩니다. 내부 jar 등록 정보 파일을 사용하기 위해 먼저 자원을 정의 할 수 있기 때문에 멋지다. 우선 덮어 쓰기를 원할 경우 서버에 파일을 채우기 만하면된다. 이 방법으로 동적 로딩을 지원하는지 확인하려고 시도합니다. – Elijah