44
java
명령을 사용하여 실행되면 런타임에이 클래스의 코드에서 실행 된 클래스의 현재 파일 시스템 위치를 확인할 방법이 있습니까?실행중인 클래스의 파일 시스템 경로를 얻는 중
다음 클래스의 예를 들면 다음과 같습니다
public class MyClass{
public static void main(String[] args){\
new MyClass().doStuff();
}
private void doStufF(){
String path = ... // what to do here?!
System.out.println("Path of class being invoked: " + path);
}
}
얻을 및 MyClass.class 파일의 파일 시스템에 올바른 경로를 인쇄 할 수있는 방법이 있나요 단지 호출되는?
마찬가지로, java -jar
명령에서 jar 파일을 호출하면 해당 jar 파일 내부의 클래스에서 jar 파일의 경로를 가져 오는 방법이 있습니까?
P.S. : java
명령이 호출 된 작업 디렉토리에 대한 어떠한 가정도하지 마십시오!
주의 사항 : 클래스 파일이 공백이있는 디렉토리의 어딘가에 있으면 리턴 된 문자열 (getLocation()이 반환하고 URL 인코딩 된 URL 경로 부분에는 공백 대신 '% 20'이 포함됩니다! –
@JandeVos'File (java.net.URI) '생성자를 사용하면이 문제를 해결하는 것으로 보입니다. – Spooky
@ Spooky의 코멘트 : 그래서 최종 파일 f = new File (MyClass.class.getProtectionDomain(). getCodeSource(). getLocation(). getURI(). getPath()); –