2014-01-15 8 views
0

Моя компания выпускает небольшой набор приложений RCP Eclipse, которые установлены в одно и то же общее расположение в Windows (C: \ Program Files (x86) \ MyCompany). Они совместно используют каталог плагинов, но имеют отдельные области конфигурации.osgi.baseConfiguration.area не разрешается с использованием относительного пути

Желаемое место для osgi.configuration.area, osgi.user.area и osgi.instance.area находятся в области данных пользовательского мобильного приложения (% APPDATA% в Windows XP/7). Из-за требований локализации и различий в расположении путей между ОС, недостаточно создать путь в файле запуска PRODUCT.ini, начиная с @ user.home. Bug 241192 добавил возможность указывать переменные окружения в файле config.ini, но не в файле PRODUCT.ini.

Это структура каталога установки:

C:/Program Files (x86)/MyCompany 
    configurationProgram1/config.ini 
    configurationProgram2/config.ini 
    configurationProgram3/config.ini 
    jre/ 
    plugins/*.jar 
    Program1.exe 
    Program1.ini 
    Program2.exe 
    Program2.ini 
    Program3.exe 
    Program3.ini 

Это пример PRODUCT.ini файла:

--launcher.defaultAction 
openFile 
-clean 
-vmargs 
-Xmx768m 
-Dosgi.locking=none 
-Dosgi.requiredJavaVersion=1.7 
-Dvisualvm.display.name=Program1 
-Dosgi.baseConfiguration.area=file:configurationProgram1 
-Dosgi.sharedConfiguration.area=file:configurationProgram1 

Это пример config.ini файл:

#Product Runtime Configuration File 
eclipse.application=com.mycompany.app.program1.application 
osgi.bundles.defaultStartLevel=4 
eclipse.product=com.mycompany.app.program1.product 
osgi.splashPath=platform:/base/plugins/com.mycompany.app.program1 
osgi.bundles= ... 
    [email protected]:start,\ 
    ... 
    org.eclipse.equinox.launcher.win32.win32.x86,\ 
    org.eclipse.swt.win32.win32.x86 
osgi.configuration.area=$APPDATA$/MyCompany/Program1/configuration 
osgi.user.area=$APPDATA$/MyCompany/Program1/user 
osgi.instance.area=$APPDATA$/MyCompany/Program1/instance 

Если рабочий каталог находится в каталоге установки при запуске приложения (например, дважды щелкните значок t он exe в Проводнике Windows, используйте ярлык с переменной «Пуск», определяемой как каталог установки), относительный путь для osgi.baseConfiguration.area разрешен к правильному абсолютному пути и osgi.configuration.area установлен в правильную местоположение в APPDATA. Если рабочий каталог не является каталогом установки (например, откройте приложение, дважды щелкнув файл в проводнике, связанный с программой, запустите из командной строки из любого каталога без установки), программа запускает, но osgi.baseConfiguration.area является все еще перечислены как относительный путь и osgi.configuration.area возвращается в свою резервную позицию (для администраторов: C:/Program Files (x86)/MyCompany/configuration для пользователей:% USERPROFILE% /. eclipse/configuration). osgi.user.area и osgi.instance.area правильно установлены в обоих случаях.

Я нашел свою собственную локальную конфигурацию (configurationProgram1/config.ini), иначе приложение вообще не запустится. Однако в проблемном случае Ракета-носитель Equinox либо игнорирует мою декларацию osgi.configuration.area, либо перезагружает ее. Я не знаю, как пройти через запуск запуска Equinox launcher (org.eclipse.equinox.launcher.Main), чтобы диагностировать проблему дальше. Правильное поведение наблюдается, если osgi.baseConfiguration.area определяется как абсолютный путь, а не относительный путь.

Приложения RCP основаны на платформе Eclipse 3.8.1. Я подтвердил, что проблема все еще существует в версии 3.8.2, последней версии ветки 3.x. Переход на платформу e4 в настоящее время не является жизнеспособным вариантом, но мне было бы интересно узнать, исправлена ​​ли эта проблема в e4.

Я понимаю, что моя совместная установка для нескольких приложений - это уникальный случай, поскольку предположения для общей установки кажутся одним приложением с несколькими локальными конфигурациями для пользователей и единой общей конфигурацией. Тем не менее я подозреваю, что это ошибка Equinox; однако я хотел спросить у сообщества, неправильно ли я настроил мою установку или неправильно понял документацию в отношении этих свойств osgi, прежде чем делать это.

+0

Просто сказать, что вы все еще можете создавать приложения типа 3.x с Eclipse 4.3, вам не нужно конвертировать в приложения e4 (многие вещи не могут быть преобразованы). Я не вижу никаких сообщений об ошибках для этой проблемы, поэтому она вряд ли изменилась. –

+0

@ greg-449, Спасибо за комментарий. Я также не мог найти никаких сообщений об ошибках, но я нашел этот соответствующий вопрос SO: http://stackoverflow.com/questions/11732006. Похоже, что использование относительного пути к альтернативному каталогу конфигурации возможно только в том случае, если оба плагина/и конфигурации/каталоги находятся в одном и том же родителе. Параметры -startup и -launcher.library используются для определения местоположения каталога plugins /. –

ответ

0

@SheldonWarkentin сообщили в another question, что LocationManager (file in 3.9 branch) требует плагинов/и конфигурации/каталоги, чтобы быть в том же каталоге и названо именно так, чтобы использовать относительный путь, который должен быть определен по -startup и - launcher.library для определения каталога plugins /. В его рекомендации рассматриваются мои непосредственные проблемы.

Я использую этот ответ для улучшения видимости Eclipse Bug 426189 («osgi.baseConfiguration.area и -configuration не разрешается с использованием относительного пути»), который я представил для решения этой проблемы. Я закрою этот вопрос, когда эта ошибка будет решена командой Equinox.

Обновление: Eclipse, ошибка исправлена ​​

Bug 426189 был зафиксирован и будет частью 4.4 (Luna) выпуска Eclipse.

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