2015-11-27 6 views
0

Я создаю плагин eclipse с использованием Eclipse Luna для RCP и RAP Developers 4.4.2. Этот плагин построен с использованием maven (и tycho). Кодирование выполняется в java, javascript и html. Для графической части, используются HTML-файл:Путь файла html для плагина eclipse

String INDEX_HTML = "main/resources/res/www/index.html"; 
String basePath= ClassName.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
File mHtmlFile = new File(basePath + INDEX_HTML); 
mBrowser.setUrl(mHtmlFile.toURI().toString()); 

Я уточнял класс с указанным всем этом в plugin.xml. (Скажите, требуется ли содержимое plugin.xml для решения этой проблемы)

Теперь проблема в том, что когда я создаю проект и помещаю полученную банку в кавычки Eclipse, он отображает сообщение «Не удается отобразить страницу», , (Принимая во внимание, что jar содержит html-файл в 'main/resources/res/www'). Когда я жестко задаю путь к html-файлу, он отлично работает.

Пожалуйста, скажите мне, как решить эту проблему без жесткого кодирования пути файла html.

ответ

1

Если это только один HTML, который не ссылается на другие ресурсы в плагине вы можете получить тип URL «файл» с помощью:

Bundle bundle = ... your plugin bundle 

URL url = FileLocator.find(bundle, new Path("file path in the plugin"), null); 

url = FileLocator.toFileURL(url); 

FileLocator.toFileURL может извлечь файл из кувшина и поместите его во временное место.

Если HTML ссылается на другие ресурсы, которые вы, возможно, потребуется использовать

Eclipse-BundleShape: dir 

в плагин MANIFEST.MF. Это создаст плагин как каталог, а не банку, чтобы файлы в плагине могли ссылаться без копирования.

Примечание: Если вы используете конструкцию 'feature', опция 'unpack' в 'feature.xml' переопределяет форму пучка.

Вы можете получить Bundle с помощью:

Bundle bundle = FrameworkUtil.getBundle(getClass()); 

(это должно работать в классе в плагине)

Вы также можете использовать:

Bundle bundle = Platform.getBundle("plugin id"); 

, которые могут быть использованы чтобы получить любую связку.

+0

Наш проект не использует пакеты OSGi ... Он построен как банка с использованием maven. – Anonymous

+0

Как вы его строите, не имеет значения, если это плагин Eclipse, это применимо. –

+0

Мы не имеем представления об OSGi. Не могли бы вы указать, что должно быть написано после: Bundle bundle = ?? (Поскольку мы не создали комплект для нашего проекта) – Anonymous

0

Веб-браузеры не знают, как показывать веб-страницы из файла jar. Вам нужно будет сделать копию файла HTML во время выполнения с помощью утилиты, такой как FileLocator. Один вызов find() URL-адреса этого файла в банке, другой - для его извлечения и возврата URL-адреса file: этой копии.

http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fcore%2Fruntime%2FFileLocator.html&anchor=toFileURL(java.net.URL)

+0

Он не работает в браузере. Это плагин eclipse и будет работать только на платформе Eclipse. – Anonymous

+0

Он по-прежнему применяется. – nitind

+0

Это плагин maven и его не связанный мы строим его и создаем его банку. Будет ли это решение возможным?. – Anonymous

Смежные вопросы