2013-12-19 3 views
2

실행 가능한 jar에 대한 대답을 읽고 classpath에 현재 경로를 추가했습니다 here. Java 실행 jar 클래스 경로 혼동

나는, pom.xml 파일에 플러그인을 추가 나는 확인하고이 행 사실 MANIFEST.MF에 추가됩니다

Class-Path: . 

지금 log4j2 문서에 따르면,이 log4j2의 현재 클래스 경로에서 찾게됩니다 .xml 파일.

log4j2.xml을 jar 파일과 동일한 디렉토리에두고 해당 디렉토리에있는 jar 파일을 실행하면 log4j2.xml 파일을 찾을 수 있습니다. 내가 java 명령에

-Dlog4j.configurationFile=/path/to/file 

를 추가 할 때

그러나, 그것은 단지를 찾습니다.

무엇이 누락 되었습니까?

솔직히 말해서 클래스 패스에 관한 정보를 잊어 버리고 Java 명령 행에 -D 항을 추가하는 것이 더 쉽습니다.

답변

0

.은 현재 프로세스의 현재 작업 디렉토리와 관련하여 현재 디렉토리로 평가됩니다 (프로세스가 OS에 의해 시작될 때 작업 디렉토리가 제공됨). 프로그램과 함께 시스템 속성 user.dir을 검사하여 프로그램을 실행하는 JVM의 작업 디렉토리를 볼 수 있습니다.

# current directory is /home/rick 
$pwd 
/home/rick 
# the code archive is not in the current wd 
$ls /home/rick/myapps 
app.jar 
# the conf file is 
$ls . 
log4j2.xml 
# This will work as expected 
$java -jar /home/rick/myapps/app.jar 

엄밀히 말해서, JAR은 당신의 파일 시스템에있을 필요가 없습니다 예를 들어, 네트워크에서 다운로드 할 수 있으며, 메모리에 추출 하였다.