我制作了一个简单的应用程序,用于创建文本文件,其中包含用户执行应用程序的文件夹的所有子文件夹。 完整项目:https://github.com/Tuchnyak/searchFileCreator
我使用这样的代码来获取.jar的路径:
//getting path to an executed .jar file
File file = new File(SearchFileCreator.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
//getting path to executed .jar file's directory
Path path = Paths.get(file.getAbsolutePath()).getParent();
所以,如果我从光盘运行应用程序,例如" c:\ data \ folderWithSubFolders" (在文件浏览器或终端中),一切都很顺利。 但是,如果我从服务器位置执行.jar,而不是从服务器看起来像名称中带字母的硬盘驱动器上安装外部网络驱动器,我会获得双倍路径而不是正确。
例如我应该得到:
\\ SRV-名称\项目\ TEMP \操场
但我得到了而不是:
\\ SRV-名称\项目\ TEMP \操场\项目\ TEMP \操场
getRoot()确定的根(如果有帮助)是:
\\ SRV-名称\项目\ 的
我必须手动修复此类路径。
那么,在这种情况下会出现什么问题?