getClassLoader() gibt null zurück, getClassLoader() wird leer

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:
Fügen Sie hier eine Bildbeschreibung ein
Richtiges JAR-Paketverzeichnis:
Fügen Sie hier eine Bildbeschreibung ein

Supongo que te gusta

Origin blog.csdn.net/mashangzhifu/article/details/123114517
Recomendado
Clasificación