Моя компания выпускает небольшой набор приложений 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, прежде чем делать это.
Просто сказать, что вы все еще можете создавать приложения типа 3.x с Eclipse 4.3, вам не нужно конвертировать в приложения e4 (многие вещи не могут быть преобразованы). Я не вижу никаких сообщений об ошибках для этой проблемы, поэтому она вряд ли изменилась. –
@ greg-449, Спасибо за комментарий. Я также не мог найти никаких сообщений об ошибках, но я нашел этот соответствующий вопрос SO: http://stackoverflow.com/questions/11732006. Похоже, что использование относительного пути к альтернативному каталогу конфигурации возможно только в том случае, если оба плагина/и конфигурации/каталоги находятся в одном и том же родителе. Параметры -startup и -launcher.library используются для определения местоположения каталога plugins /. –