我试图在具有多个依赖项的巨型命令行应用程序中获取当前用户路径。每次一个“。”使用它,它为我提供了应用程序路径(jar所在的位置),而不是当前用户路径(进行调用的位置)。因此,当运行此命令时:File file = new File(".");System.out.println(file.getCanonicalPath());给我应用程序所在的路径。但是当我创建一个单独的小型应用程序时,并使用相同的代码。从其他目录调用jar,它会提供当前用户路径。我使用JSAP命令行解析器作为命令行参数,其作用方式相同。如何解决呢?我希望我的大型应用程序获得当前的用户路径,而不是应用程序路径。是什么使他们的行为有所不同? 最佳答案 我认为您会发现启动“大应用程序”的批处理文件(/ shell脚本)在启动Java之前已将目录更改为主jar文件的目录,这就是为什么您的简单测试应用程序返回用户的工作目录为,而大型应用程序返回jar文件的目录。尝试尽早将用户的CWD存储在批处理文件中,然后将其传递给Java:set savedcwd=%cd%... later on ...java "-Dsavedcwd=%savedcwd%"然后在您的应用程序中String savedcwd = System.getProperty("savedcwd");
07-26 07:12
查看更多