Чтение файлов в Java Web Start - PullRequest
0 голосов
/ 01 октября 2010

У меня есть приложение, в котором есть некоторые сторонние библиотеки, которым требуются некоторые файлы конфигурации. Я поместил их в файлы JAR, чтобы они могли быть развернуты с помощью JWS. Я знаю, что вы можете читать файлы из jar-файла, используя getResourceAsStream (), но сторонние библиотеки этого не делают. Я попытался прочитать их из банки с помощью getResourceAsStream и записать фактические файлы в user.dir. Приложение работает нормально таким образом. Однако, похоже, что большинство пользователей запускают приложение с ярлыка на рабочем столе, поэтому, конечно, их user.dir - это рабочий стол. Они не хотели бы засорять свой рабочий стол файлами конфигурации.

Есть ли лучший способ справиться с этим?

1 Ответ

0 голосов
/ 02 августа 2011

Вы можете изменить свой 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);
...