JAR 파일에서 리소스 로드
애플리케이션에서 WinProcessor.class.getResource("repository")를 사용하여 리소스를 로드합니다. toString()은 IDE에서 실행할 때 파일 경로를 제공하지만 JAR 파일로 실행할 때는 JAR URL을 반환합니다. 이러한 불일치는 JAR 파일에 압축 및 패키지 형식의 리소스가 포함되어 있기 때문에 발생합니다.
JAR의 리소스 로드 이해
애플리케이션을 JAR 파일로 패키지하면 해당 내용이 리소스를 포함한 은 아카이브 내에 저장됩니다. JAR 파일 내에서 리소스에 액세스하려고 하면 JVM은 이를 파일 시스템의 파일과 다르게 처리합니다. getResource 메소드는 JAR 내의 리소스 위치를 가리키는 URL을 반환합니다.
해결책: getResourceAsStream 사용
이 문제를 해결하려면 대신 getResourceAsStream을 사용하는 것이 좋습니다. getResource.getResource.getResource.getResource.getResource.getResource.getResource를 가져옵니다. getResourceAsStream은 JAR 파일에서 직접 리소스 내용을 읽을 수 있도록 하는 InputStream을 반환합니다. 그런 다음 InputStream을 사용하여 ConfigurationContext와 같은 필수 개체를 생성하거나 시스템 속성을 설정할 수 있습니다.
다음은 getResourceAsStream을 사용하여 업데이트된 예입니다.
InputStream repositoryInputStream = WinProcessor.class.getResourceAsStream("repository"); ConfigurationContext ctx = (ConfigurationContext) ConfigurationContextFactory.createConfigurationContextFromFileSystem(repositoryInputStream, null); InputStream fileNameInputStream = WinProcessor.class.getResourceAsStream("file_name"); System.setProperty("javax.net.ssl.trustStore", fileNameString);
getResourceAsStream을 사용하면 다음과 같은 문제를 피할 수 있습니다. IDE에서 실행하는 것과 JAR 파일로 실행하는 것 사이의 경로 차이 문제. InputStream은 JAR 내의 리소스 위치를 올바르게 가리키므로 해당 콘텐츠에 액세스할 수 있습니다.
위 내용은 Java에서 JAR 파일의 리소스에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!