當我嘗試在UNC路徑中使用JAR文件時,發現遇到了問題。 java.io.file
的構造函數將始終將UNC文件路徑轉換爲本地路徑。處理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
。但我期望得到的是file:\\dir1\dir2\file.jar!MyClass
。
我試圖在dirStr
中添加更多斜槓,但它無法工作。因爲在java.io.file
中,它會調用方法來刪除重複的斜線。我試圖用URI
創建ff
。但輸出將是\dir1\dir2\file.jar!Myclass
,不能用於成功使用JAR文件。我認爲JAR的格式必須以file:
協議開始,以便使用上面的字符串\dir1\dir2\file.jar!Myclass
解析以!
結尾的字符串。
有什麼辦法可以得到File
的路徑名,即ff
,就像file:\\dir1\dir2\file.jar!MyClass
一樣。
我認爲'file:'前綴通常用於本地路徑。 UNC路徑不是本地路徑。嘗試不使用'file:'前綴,即'\\ dir1 \ dir2 \ file.jar!MyClass'。你也可以嘗試使用正斜槓,'//dir1/dir2/file.jar!MyClass' – janos
爲什麼你認爲你必須提供一個URL到'File'構造函數?你不能,也不必。不清楚你真的在這裏問什麼。 – EJP
因爲我需要在UNC路徑中使用JAR文件。當您的java CLASSPATH包含遠程UNC路徑時,您將遇到此問題。它會像'dirStr'一樣解析JAR文件。 –