따라서 프로젝트 구조는 다음과 같습니다. jar 파일 (이름이 patch.jar) 및 리소스 폴더.jar 파일 내부의 클래스는 jar 파일 외부의 파일을 읽습니다.
그래서 jar 파일에는 클래스 (patch.class)가 있습니다.
리소스 폴더에는 하위 폴더 (scripts)가 있고 하위 폴더에는 코드를 읽고 싶은 파일 (patch.file)이 있습니다.
이상한 점은 상대 경로를 설정하면 코드를 읽을 수 없지만 경로없이 파일 이름을 설정하면 작동합니다.
File a = new File("./resource/scripts/patch.file"); //not work
File a = new File("./patch.file"); //works
정말 혼란스러워하고 있습니다.
상대 경로는 * (프로그램이 호출 된 방법에 따라) 아무것도 * 할 수있는 프로그램의 "현재 디렉토리"를 기준으로 기억 : 그 작업을 수행하려면, 다음과 같이해야합니다. 프로그램의 루트 디렉토리라고 가정 할 수 없으므로 이와 같은 상대 경로를 하드 코딩하는 것은 좋지 않은 아이디어입니다. – Wyzard
@Wyzard 감사합니다. 매우 도움이됩니다. – aken848