UNCパスでJARファイルを使用しようとすると、問題が発生しました。 java.io.file
のコンストラクタは、常にUNCファイルパスをローカルパスに変換します。 file:\dir1\dir2\file.jar!Myclass
:UNCファイルパスを処理するJava.io.fileコンストラクタ
は例えば、私はのような出力が得られます
String dirStr = "file:\\\\dir1\dir2\file.jar!Myclass";
File ff = new File(dirStr);
System.out.println(ff.toString());
を試してみてください。しかし、私が期待しているのはfile:\\dir1\dir2\file.jar!MyClass
です。
dirStr
にスラッシュを追加しようとしましたが、機能しません。 java.io.file
では、メソッドを呼び出して重複したスラッシュを削除するためです。
URI
を使用してff
を作成しようとしています。しかし、出力は\dir1\dir2\file.jar!Myclass
になりますが、JARファイルを正常に使用することはできません。文字列\dir1\dir2\file.jar!Myclass
の!
で終わる文字列を解析するには、JARの形式をfile:
プロトコルで開始する必要があります。
のパス名はFile
、つまりff
のようになります(file:\\dir1\dir2\file.jar!MyClass
など)。
'file:'接頭辞は、通常、ローカルパスに使用されると思います。 UNCパスはローカルパスではありません。 'file:'接頭辞なしで試してみてください。 '\\ dir1 \ dir2 \ file.jar!MyClass'です。また、スラッシュ「//dir1/dir2/file.jar!MyClass'を試すことができます – janos
なぜ 'File'コンストラクタにURLを指定しなければならないと思いますか?あなたはすることはできません、あなたはする必要はありません。あなたが本当にここで何を求めているのか不明です。 – EJP
UNCパスでJARファイルを使用する必要があるためです。 java CLASSPATHにリモートUNCパスが含まれている場合は、この問題が発生します。 'dirStr'のようなJARファイルを解析します。 –