Как получить каталог или путь установки eclipse / plugins - PullRequest
7 голосов
/ 18 января 2011

Как получить каталог установки Eclipse путем программирования в swt / java.Я действительно хочу получить каталог плагинов затмения.

Ответы [ 2 ]

8 голосов
/ 18 января 2011

Обновление (январь 2012)
Джеймс Мур упоминает в комментарии , что FAQ и API довольно старые.

FileLocator.resolve(URL) теперь предпочтительнее устаревшего Platform.resolve().

Как показывает в этом примере , вам необходимо передать фактический ресурс (здесь bundle ), а не имя ресурса, для его разрешения:

private static URI locateFile(String bundle, String fullPath) {
  try {
    URL url = FileLocator.find(Platform.getBundle(bundle), new Path(fullPath), null);
    if(url != null)
      return FileLocator.resolve(url).toURI();
  } catch (Exception e) {}
    return null;
  }
}

См. Также « Как обратиться к файлу из файла jar в плагине eclipse » для получения дополнительной информации.


Оригинальный ответ (январь 2011 г.)

Может быть, часто задаваемые вопросы " Как узнать местоположение установки плагина? " может помочь здесь:

Как правило, следует избегать предположений о расположенииподключаемого модуля во время выполнения.
Чтобы найти ресурсы, например изображения, которые хранятся в каталоге установки вашего подключаемого модуля, вы можете использовать URL-адреса, предоставленные классом Platform.Эти URL-адреса используют специальный протокол платформы Eclipse, но если вы используете их только для чтения файлов, это не имеет значения.

В Eclipse 3.1 и более ранних версиях следующий фрагмент открывает поток ввода для файла с именем sample.gif находится в подкаталоге, называемом icons, каталога установки плагина:

  Bundle bundle = Platform.getBundle(yourPluginId);
  Path path = new Path("icons/sample.gif");
  URL fileURL = Platform.find(bundle, path);
  InputStream in = fileURL.openStream();

Если вам нужно узнать расположение файловой системы плагина, вынужно использовать Platform.resolve(URL).Этот метод преобразует URL-адрес платформы в стандартный протокол URL-адреса, такой как протокол передачи гипертекста (HTTP) или файл.
Обратите внимание, что платформа Eclipse не указывает, что плагины должны существовать в локальной файловой системе, поэтому вы не можетеполагайтесь на этот метод, возвращающий URL файловой системы при любых обстоятельствах в будущем.

В Eclipse 3.2 предпочтительный метод выглядит следующим образом:

  Bundle bundle = Platform.getBundle(yourPluginId);
  Path path = new Path("icons/sample.gif");
  URL fileURL = FileLocator.find(bundle, path, null);
  InputStream in = fileURL.openStream();
0 голосов
/ 27 июня 2016

Используйте приведенный ниже код, чтобы получить путь к плагину:

this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...