2010-09-18 3 views
1

Я пишу плагин Eclipse, где я хочу прочитать файл в проекте и сделать что-нибудь на нем. Например файл находится в: Project testplugin и пути: com/flow/FlowMain.java Я хочу программно прочитать этот файл и добавить в него некоторый код. То, что я пытаюсь это:Получить расположение файла в плагине Eclipse

Строка базы = Platform.getBundle (config.getPluginId()) getEntry ("/") ToString();.. Строка relativeUri = "com/flow/FlowMain.java"; Файл f = новый файл (база + relativeUri);

Это, очевидно, не удается, так как значение «базы + relativeUri» возвращается: запись: //1079.fwk5184781/com/flow/FlowMain.java

Так как же я идти о получении полного файла путь из плагина?

+2

возможно дубликат [Получить файл из в папке в рабочей области] (http://stackoverflow.com/questions/2148821/retrieve- a-file-from-in-a-folder-in-the-workspace) –

+0

Да, вам нужен второй метод перехода из корня рабочей области, а не из пакета. – zvikico

ответ

3

«запись» - это протокол, определяемый равноденствием, поэтому вы можете получить реальный путь, используя org.eclipse.core.runtime.FileLocator.toFileURL (URL).

+0

Из сообщения, предложенного Фабианом, я пытаюсь получить рабочее пространство root и найти фактический файл. Я делаю это NPE. Само рабочее пространство корня, кажется, приходит как null. Я получаю NPE при попытке System.out.println (resourceInRuntimeWorkspace.getName()); Одна вещь, чтобы уточнить, что я запускаю этот код «как приложение eclipse» – Ved

+0

Еще одна проблема, с которой я сталкиваюсь, заключается в том, что файл находится в папке проекта, поэтому путь должен быть «имя-проекта» +/com/flow/FlowMain.java. Теперь, как мне получить имя текущего проекта и добавить его в путь? Есть ли способ получить его из IWorkspaceRoot? – Ved

+0

Вы должны обратить внимание на то, что экземпляр пакета, полученный через Platform.getBundle (config.getPluginId()), является пакетом на вашей целевой целевой платформе. Например, это ваш проект подключаемого модуля в рабочем пространстве. Вы можете получить абсолютный путь к папке проекта при выполнении кода в eclipse. Однако это файл jar на целевой платформе, например, как пакет org.eclipse.core.runtime. Когда вы пытаетесь получить его местоположение, банку будет извлечен в папку данных osgi. – Kane

0

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

String workSpaceRootpath=this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()+Relativepath of a file; 
Смежные вопросы