0
내 클래스가 포함 된 jar 파일 내 리소스에 액세스하려고합니다.JAR의 Java 리소스 액세스
이 사이트에는 몇 가지 방법이 있지만 작동하지는 않는 몇 가지 질문이 있습니다.
내 코드는 이것이다 :
package nl.joshuaslik.UFMReckoning;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
System.out.println(getFile("file/test.txt"));
}
private static String getFile(String fileName) {
StringBuilder result = new StringBuilder("");
// Get file from resources folder
ClassLoader classLoader = App.class.getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
System.out.println(classLoader.getResource(fileName).getPath());
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
result.append(line).append("\n");
}
scanner.close();
} catch (IOException e) {
e.printStackTrace();
}
return result.toString();
}
}
그리고 내 디렉토리 레이아웃이 있습니다 :
classes
├── nl
| └── joshuaslik
| └── UFMReckoning
| └── App.class
└── file
└── test.txt
이 코드는 잘 실행하지 항아리에있는 동안.
그러나, 항아리 내부에있는 동안 작동하지 않습니다.
UFM-Reckoning-0.0.0-alpha.0.jar
├── nl
| └── joshuaslik
| └── UFMReckoning
| └── App.class
├── META-INF
| └── MANIFEST.MF
└── file
└── test.txt
액세스를 시도하는 파일이 있음을 볼 수 있습니다 : file:/D:/Joshua/Git/Coding/UFM-Reckoning/build/UFM-Reckoning-0.0.0-alpha.0.jar!/file/test.txt
, 나에게 이상한 경로처럼 보인다 때문에 Windows에서 허용되지 않습니다 거기에 !
,의 .
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Joshua
Created-By: Apache Maven 3.2.3
Build-Jdk: 1.8.0_25
Main-Class: nl.joshuaslik.UFMReckoning.App
MANIFEST.MF
의내용 사람은 고정 할 수있는 방법을 알고 있나요?
Windows 7 64 비트 및 Maven을 사용하여 컴파일하고 있습니다.
getResourceAsStream()이 이전 시간에 작동하지 않는 이유는 모르겠지만 지금은 알 수 없습니다. 그러나이 방법은 이미지에 적합하지 않습니까? 그래서 같은 문제가 발생하여 파일이 발견되지 않습니다. – JoshCode
예제의 getResource()가 getResourceAsStream()과 같지 않습니다. – SubOptimal