1. Problembeschreibung
Rufen Sie die Ressourcen im JAR-Paket über getClassLoader() ab, das leer ist:
this.getClassLoader().getResources("com/xxxx/test/Start.class").hasMoreElements();
this.getClassLoader().getResourceAsStream("test.txt");
Mit ClassGraph können Sie es in den Paketnamen ändern, um zu sehen, ob Sie es erhalten können:
try (ScanResult scanResult = new ClassGraph().acceptPackages("com.xxx.xxx.xxx").scan()) {
scanResult.getAllResources().forEachByteArrayIgnoringIOException((io.github.classgraph.Resource res, byte[] content) -> {
String path = res.getPath();
System.out.println("文件:" + path);
});
}
Zweitens, die Lösung
Die Ressource kann nicht abgerufen werden, im Grunde ist der Pfad falsch oder der ClassLoader ist falsch. Ein weiteres Problem besteht darin, dass ein Problem mit dem JAR-Paket vorliegt. Es gibt kein Verzeichnis im JAR-Paket. Sie können es über 7zip anzeigen:
7z l xxxx.jar
Falsches JAR-Paketverzeichnis:
Richtiges JAR-Paketverzeichnis: