Как я могу указать значок для нового мастера в Eclipse?

#eclipse #eclipse-plugin

#eclipse #eclipse-плагин

Вопрос:

Я добавил пользовательский мастер создания проекта в Eclipse, который использует ранее существовавший Java nature. Вот блок из plugin.xml куда я его добавляю:

   <wizard
        class="com.corp.eclipse.wizard.project.NewExtensionWizard"
        descriptionImage="/rsrc/icons/app.png"
        finalPerspective="org.eclipse.jdt.ui.JavaPerspective"
        icon="rsrc/icons/app.png"
        id="framer.newExtensionWizard"
        name="Extension Project"
        project="true">
  </wizard>
  

Тип проекта «Проект расширения» отлично отображается в диалоговом окне «Создать», но значок не отображается. Кто-нибудь знает, есть ли какой-нибудь трюк с привязкой значков к мастерам в Eclipse? Это Eclipse 3.5.2.

Комментарии:

1. Вы уверены, что «rsrc /icons /app.png» является относительным путем к plugin.xml ?

2. Или вы пропустили папку rsrc / в вашем build.properties?

3. Нет, rsrc / находится в build.properties. Я уверен, что путь к значку указан правильно, поскольку значок отображается в мастере, который Eclipse предоставляет вам для редактирования plugin.xml.

Ответ №1:

У меня была такая же проблема, как у вас, и мне пришлось указать точку останова в коде инициализации, чтобы наконец выяснить причину. Возможно, это ваша проблема:

В AbstractUIPlugin.class , imageDescriptorFromPlugin(...)

 // if the bundle is not ready then there is no image
Bundle bundle = Platform.getBundle(pluginId);
if (!BundleUtility.isReady(bundle)) {
    return null;
}
  

Возможно, пакет не загружается. Это может произойти, если идентификатор плагина не является префиксом точки расширения (как было в моем случае). Итак, идентификатор вашего мастера framer.newExtensionWizard . Если ваш идентификатор всего плагина (Bundle-SymbolicName в MANIFEST.MF) не является just framer , метод не найдет пакет, и, следовательно, изображение не появится.

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

Комментарии:

1. Вау, это невероятно конкретно! К сожалению, я не работаю в компании, где у меня возникла эта проблема, поэтому код утерян для меня (и я больше не использую Eclipse). Я все равно приму это, так что вы получите оценку за то, что с готовностью оценили.

Ответ №2:

Является ли rsrc вашей исходной папкой? Обычно папка icons хранится непосредственно в проекте. Вы можете переместить его из исходной папки, а также указать его в build.properties.

Комментарии:

1. Нет, это дочерний элемент папки проекта, рядом с исходной папкой. Это соглашение для проектов в моей компании.

2. Ваш значок имеет правильный размер? Можете ли вы попробовать gif-файл вместо png?

3. Я не автор оригинального плаката, но я могу подтвердить, что у меня такая же проблема в Indigo, независимо от того, является ли значок .png или .gif. Тот же значок отлично работает для org.eclipse.ui.editors, поэтому я знаю, что он может видеть и отображать значок. Он просто не отображается в org.eclipse.ui.newWizards.