2015-04-14 2 views
2

У моего плагина есть html-ресурс, который он отображает на виджетах SWT-браузера.Проблемы с поиском ресурсов по относительному пути в плагине

Я могу найти этот HTML файл из папки ресурсов в сторону моего плагина с помощью этого кода:

public File resolveResource(URL url) { 
    File resolvedFile = null; 
    try { 
     URL resolvedFileURL = FileLocator.toFileURL(url); 
     URI resolvedURI = new URI(resolvedFileURL.getProtocol(), resolvedFileURL.getPath(), null); 
     resolvedFile = new File(resolvedURI); 
    } catch (Exception e) { 
     // exception handling 
    } 
    return resolvedFile; 
} 

Теперь этот HTML-файл ресурсов имеет в виду некоторые CSS, изображения, которые присутствуют в той же папке ресурсов внутри плагин.

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

Это нормально работает, когда я запускаю приложение Eclipse из среды IDE.

HTML файл ресурсов:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; width=device-width" /> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
     <link rel="stylesheet" href="css/styles.css" type="text/css" /> 
    </head> 
    <body> 
     <div class="content" id="parent"> 
     </div> 
     <div class="footer"> 
      All contents copyright 2014. 
     </div> 
    </body> 
</html> 

ответ

1

FileLocator.toFileURL ожидает URL в формате возвращенного FileLocator.find. Нормальное использование является:

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

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

URL fileURL = FileLocator.toFileURL(url); 

Важно использовать FileLocator.find, поскольку специальные URL-адреса используются для ресурсов в файле плагина Jar.

Если вам нужно получить доступ к другим файлам в папке, вы должны использовать проект «feature» для своих плагинов и указать, что плагин распаковывается во время установки плагина, чтобы создать нормальную папку для файлов. Или используйте «Eclipse-BundleShape» - см. here для более подробной информации.

+0

Проблема заключается не в поиске ресурса, поскольку оба подхода работают - тот, который я использовал, и тот, который вы показали выше - фактическая проблема заключается в поиске ресурсов по сравнению с ресурсом плагина, поэтому здесь. В приведенном выше сценарии я способный найти .html-файл, который является ресурсом, находящимся в файле jar-файла, но этот .html-файл ссылается на css и изображения, как показано, которые также находятся в файле jar в той же папке ресурсов. Теперь, как html-файл, который находится по вышеуказанному коду, будет знать о css и изображениях из той же папки. – Amrit

+0

Добавил что-то о распаковке плагина. –

+0

Это работает !! Благодаря :) – Amrit

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