Безголовая сборка PDE и совместимость с компилятором Java

Моя проблема заключается в том, что я хочу обновить основанный на функциях файл build.properties, чтобы процесс автономной сборки использовал выпуск Java JRE/JDK 1.6, но был совместим с выпуском Java JRE/JDK 1.5.

Как это будет достигнуто в безголовой сборке через файл build.properties (т. е. какие свойства будут установлены и какие значения)?

Я думаю о некоторой комбинации значений настроек для свойств JavaSE-1.6, javaSource и javaTarget, как показано ниже.

Любая помощь будет принята с благодарностью.

############# JAVA COMPILER OPTIONS ##############
# The location of the Java jars to compile against.  Typically the rt.jar
#  for your JDK/JRE
#bootclasspath=${java.home}/lib/rt.jar

# specific JRE locations to compile against. These values are used to compile
#  bundles specifying a Bundle-RequiredExecutionEnvironment. Uncomment and set
#  values for environments that you support
#CDC-1.0/Foundation-1.0= /path/to/rt.jar
#CDC-1.1/Foundation-1.1=
#OSGi/Minimum-1.0=
#OSGi/Minimum-1.1=
#JRE-1.1=
#J2SE-1.2=
#J2SE-1.3=
#J2SE-1.4=
#J2SE-1.5=
JavaSE-1.6=${java.home}/lib/rt.jar
#PersonalJava-1.1=
#PersonalJava-1.2=
#CDC-1.0/PersonalBasis-1.0=
#CDC-1.0/PersonalJava-1.0i=
#CDC-1.1/PersonalBeclipseasis-1.1=
#CDC-1.1/PersonalJava-1.1=

...

# Default value for the version of the source code. This value is used when
#  compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment
#  or set javacSource in build.properties
javacSource=1.5

# Default value for the version of the byte code targeted. This value is used
#  when compiling plug-ins that do not set the
#  Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties.
javacTarget=1.5

person Michael    schedule 11.07.2011    source источник


Ответы (1)


Вместо того, чтобы делать это в своей сборке PDE, почему бы вам не установить Bundle-RequiredExecutionEnvironment в своих плагинах на Java 5? Редактор манифеста в PDE поможет вам установить правильное значение.

person Konstantin Komissarchik    schedule 11.07.2011
comment
Спасибо за продолжение Константин! Пакеты в настоящее время имеют это свойство, установленное в файле MANIFEST.MF, поэтому оно уже установлено. Я предположил, что предоставление значений по умолчанию 1,5 для javacSource и javacTarget будет охватывать любые пакеты, в которых это свойство может быть изменено или не предоставлено (например, будущие пакеты). Что касается установки свойства JavaSE-1.6, указывает ли это PDE на использование дистрибутива Java JDK/JRE 1.6? Моя конечная цель - использовать 1.6, когда на одной машине существует более одной версии JRE/JDK. Будет ли это контролироваться только переменной JAVA_HOME? - person Michael; 12.07.2011
comment
Сборка PDE определяет идеальную версию Java, с которой должен быть собран данный плагин, на основе метаданных плагина. Затем он просматривает ваши build.properties, чтобы найти соответствующий JDK. Если он не находит подходящего, он ищет резервные версии. В идеале вы должны строить с минимальным уровнем совместимости плагина. Это не только установит уровень языка соответствующим образом, но и уловит случайное использование классов, представленных в более новой версии Java. - person Konstantin Komissarchik; 12.07.2011