"Java.lang.NoClassDefFoundError: Klasse java.nio.file.FileSystems $ DefaultFileSystemHolder konnte nicht initialisiert werden" tritt auf, obwohl es kein Problem gibt, den Klassenpfad und die Codierung mehrmals zu überprüfen.

Selbst wenn ich im Internet suche, gibt es keine Informationen, daher schreibe ich sie zum Teilen.

Ursache

Tritt auf, wenn ein nicht vorhandenes Verzeichnis als aktuelles Verzeichnis festgelegt ist.

Ich weiß nicht, ob alle anderen Dateisysteme die gleichen Spezifikationen haben, aber zumindest in RedHat7 befinden Sie sich in einem nicht vorhandenen Verzeichnis, wenn Sie das aktuelle Verzeichnis löschen.

[root@******** ~]$ cd hoge
[root@******** hoge]$ rmdir ../hoge
[root@******** hoge]$ 

Tritt auf, wenn der Initialisierungsprozess der Klasse "DefaultFileSystemHolder" in diesem Status ausgeführt wird. Da es in der Klasse "java.nio.file.Paths" verwendet wird, besteht eine gute Chance, dass der Initialisierungsprozess ausgeführt wird.

Was ist in meiner Umgebung passiert?

Es wurde ein Fehlerbericht ausgelöst, dass die folgende Ausnahme auftrat, als ein bestimmtes Programm ausgeführt wurde.

java.lang.NoClassDefFoundError: Could not initialize class java.nio.file.FileSystems$DefaultFileSystemHolder
        at java.nio.file.FileSystems.getDefault(FileSystems.java:176)
        at java.nio.file.Paths.get(Paths.java:84)
・ ・ ・

Da "NoClassDefFoundError" angezeigt wird, überprüfe ich den Klassenpfad und das JAR, aber es spielt keine Rolle, wie oft ich es überprüfe. Wenn Sie Google ausprobieren, finden Sie einen JDK-Fehlerbericht wie hier, der "auftritt, wenn" file.encoding "cp037 ist". Allerdings habe ich file.encoding überhaupt nicht berührt ... Oder besser gesagt, es wird nicht reproduziert, selbst wenn es auf dieselbe Weise auf demselben Server wie der Fehlerbericht ausgeführt wird.

Dieses Programm sendet die Dateien in einem bestimmten Verzeichnis nach außen und löscht das Verzeichnis, wenn die Übertragung abgeschlossen ist. Als ich die Screenshots im Fehlerbericht sorgfältig durchgesehen habe, wurde sie ausgeführt, wobei das zu löschende Verzeichnis das aktuelle Verzeichnis war. Wenn Sie dasselbe versuchen, wird es reproduziert.


Nach einem kleinen Debugging scheint es, dass während des Initialisierungsprozesses von DefaultFileSystemHolder "sun.nio.fs.UnixException: Es gibt keine solche Datei oder kein solches Verzeichnis" aufgetreten ist, aber der Root-Auftrittspunkt wurde nicht überholt. Hmm. Ich hoffe, dass jemand, der mit den Informationen in diesem Artikel vertraut ist, sie nachschlagen wird.

Recommended Posts

"Java.lang.NoClassDefFoundError: Klasse java.nio.file.FileSystems $ DefaultFileSystemHolder konnte nicht initialisiert werden" tritt auf, obwohl es kein Problem gibt, den Klassenpfad und die Codierung mehrmals zu überprüfen.
"Fehler: Hauptklasse XXX nicht gefunden oder konnte nicht geladen werden" tritt auf, obwohl die Hauptklasse vorhanden ist
Die mysteriöse java.exe war die Ursache für die Unfähigkeit, Java- und Java-Versionen immer wieder abzugleichen.