Wenn ich versuche, die JAR-Datei im UNC-Pfad zu verwenden, finde ich ein Problem. Der Konstruktor java.io.file
konvertiert immer einen UNC-Dateipfad in den lokalen Pfad.Java.io.file Konstruktor mit UNC Dateipfad umgehen
Zum Beispiel versuche ich
String dirStr = "file:\\\\dir1\dir2\file.jar!Myclass";
File ff = new File(dirStr);
System.out.println(ff.toString());
Ich werde eine Ausgabe wie bekommen: file:\dir1\dir2\file.jar!Myclass
. Aber was ich erwarte, ist file:\\dir1\dir2\file.jar!MyClass
.
Ich habe versucht, mehr Schrägstriche in dirStr
hinzuzufügen, aber es kann nicht funktionieren. Weil in der java.io.file
, wird es Methode aufrufen, doppelte Schrägstriche zu entfernen.
Und ich versuche, die URI
zu verwenden, um die ff
zu erstellen. Aber die Ausgabe wird \dir1\dir2\file.jar!Myclass
sein, die nicht verfügbar ist, um JAR-Datei erfolgreich zu verwenden. Ich denke, die Form von JAR muss mit dem file:
Protokoll beginnen, um die Zeichenkette zu verwenden, die mit !
in der oben genannten Zeichenkette \dir1\dir2\file.jar!Myclass
endet.
Gibt es eine Möglichkeit new File()
kann den Pfad von File
, das heißt ff
, wie file:\\dir1\dir2\file.jar!MyClass
zu bekommen.
Ich denke, das Präfix 'file:' wird normalerweise für lokale Pfade verwendet. Ein UNC-Pfad ist kein lokaler Pfad. Versuchen Sie es mit dem 'file:' - Präfix, also '\\ dir1 \ dir2 \ file.jar! MyClass'. Sie können auch mit Schrägstrichen versuchen, '//dir1/dir2/file.jar! MyClass' – janos
Warum denken Sie, müssen Sie eine URL zu einem' Datei' Konstruktor liefern? Du kannst nicht, und du musst nicht. Unklar, was du hier wirklich fragst. – EJP
Weil ich die JAR-Datei im UNC-Pfad verwenden muss. Wenn Ihr Java-CLASSPATH den Remote-UNC-Pfad enthält, wird dieses Problem auftreten. Es wird die JAR-Datei wie "dirStr" analysieren. –