当我尝试在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文件。 –