我有一个应用程序有一些第三方库需要一些配置文件存在。我将它们放在jar文件中,以便可以使用JWS进行部署。我知道您可以使用getResourceAsStream()从jar文件中读取文件,但第三方库不会这样做。我尝试用getResourceAsStream从jar中读取它们并将实际文件写入user.dir。该应用程序正常工作。但是,似乎大多数用户从桌面上的快捷方式启动应用程序,因此他们的user.dir当然是桌面。他们宁愿不用配置文件乱丢他们的桌面。
有没有更好的方法可以解决这个问题?
答案 0 :(得分:0)
您实际上可以更改您的user.dir。我认为它起初是“不可触碰的”。
首先,你需要让它“可触摸”
我们使用类MainWindow
static {
try {
Class clazz = ClassLoader.class;
Field field = clazz.getDeclaredField("sys_paths");
boolean accessible = field.isAccessible();
if (!accessible) {
field.setAccessible(true);
}
field.set(clazz, null);
try {
String currentDir = System.getProperty("java.library.path");
//now remove the current directory from the library path.
String sansCurrentDir = removeCurrentDirectoryFromPath(currentDir);
System.setProperty("java.library.path", sansCurrentDir );
}
finally {
field.setAccessible(accessible);
}
} catch (Exception e) {
//in our case we rethrow
}
}
//and then later in our code in the same static block we can now create our root directory (ie, the user.dir) and execute
System.setProperty("user.dir", rootDirectory);