【发布时间】:2023-03-10 22:09:01
【问题描述】:
我需要为我的程序提供一个设置文件,用户应该有权访问该文件来编写我需要的一些设置。
我在应用程序根目录的新目录(称为设置)下创建了一个文件,但在运行时找不到它。
我用File SettingsFile=new File(ClassLoader.getSystemClassLoader().getResource(".").getPath()+"settings/CreateSettings.txt");
当我在 Eclipse 下执行此操作时,我得到/application/home/dir/target/classes/settings/ZipCreateSettings.txt 这是错误的。
如果我使用 java -jar 在终端上执行它,我会得到正确的路径,/application/home/dir/settings/ZipCreateSettings.txt
这会给我带来问题,因为我需要直接从 eclipse 运行应用程序而不使用终端,即使它在启动和运行时将使用 jar 执行。
反正我也不能这样,因为这段代码可能会落到别人手里,他们不知道该怎么处理。
我还使用了其他一些技术,例如
new java.io.File("").getAbsolutePath(); 但这总是给我当前的工作目录,所以如果我从 /home 执行 jar,我会得到 /home。
我认为问题可能是 maven(我一点也不熟悉),因为我的代码前段时间使用纯 java 应用程序。
【问题讨论】:
-
System.getProperty("user.dir");这是你要找的吗? -
@McN 不,这会获取用户的当前目录,例如 /home
-
你在想
user.home,user.dir是当前工作目录。所以你应该能够找到文件为System.getProperty("user.dir")+"//settings//CreateSettings.txt"; -
不,我知道并且我测试了它,user.dir 为我提供了用户执行应用程序的当前目录。至少在Linux下,不能说Windows
标签: java