在Java Web Start中读取文件

时间:2010-10-01 00:14:27

标签: java java-web-start

我有一个应用程序有一些第三方库需要一些配置文件存在。我将它们放在jar文件中,以便可以使用JWS进行部署。我知道您可以使用getResourceAsStream()从jar文件中读取文件,但第三方库不会这样做。我尝试用getResourceAsStream从jar中读取它们并将实际文件写入user.dir。该应用程序正常工作。但是,似乎大多数用户从桌面上的快捷方式启动应用程序,因此他们的user.dir当然是桌面。他们宁愿不用配置文件乱丢他们的桌面。

有没有更好的方法可以解决这个问题?

1 个答案:

答案 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);