Почему Eclipse не скомпилирует мой код в Java 1.5? - PullRequest
0 голосов
/ 15 июля 2010

Я установил Eclipse 3.5.2 и JDK для Java 6.

Вот мои установленные JRE в Eclipse

альтернативный текст http://img806.imageshack.us/img806/3345/eclipsejres.jpg

Я пытаюсь скомпилировать с помощью файла сборки ant, часть которого выглядит следующим образом и задает Java 1.5:

<target name="compile" depends="build-common, init" description="Compile files. ">
    <javac srcdir="${src_dir}" destdir="${build_dir}" debug="true" target="1.5" source="1.5">
        <classpath path="${tomcat_home}/lib/servlet-api.jar;${tomcat_home}/lib/log4j-1.2.15.jar;/usr/local/lib/portlet-api-1.0.jar;." />
    </javac>
</target>

Но когда я пытаюсь скомпилировать, в окне консоли отображается следующая ошибка:

compile:
    [javac] Compiling 1 source file to H:\jephperro\portlets\build
    [javac] javac: invalid target release: 1.5
    [javac] Usage: javac <options> <source files>
    [javac] where possible options include:
    [javac]   -g                        Generate all debugging info
    [javac]   -g:none                   Generate no debugging info
    [javac]   -g:{lines,vars,source}    Generate only some debugging info
    [javac]   -nowarn                   Generate no warnings
    [javac]   -verbose    ....

BUILD FAILED
H:\jephperro\portlets\CourseList-build.xml:25: Compile failed; see the compiler error output for details.

Total time: 531 milliseconds

В чем моя проблема с Eclipse?

Ответы [ 5 ]

1 голос
/ 15 июля 2010

подробности см. В выводе ошибки компилятора.

Возможно, у вас есть зависимость от библиотеки, которая была скомпилирована с использованием более поздней версии Java, чем ваш 1.5 JDK.

На самом деле, где ваш 1,5 JDK? Все, что я вижу, это JRE. Я предполагаю, что вам просто нужно скачать версию 1.5 JDK и добавить это в Eclipse.

0 голосов
/ 16 июля 2010

Как упоминал Сайфуддин и другие, эта ошибка, скорее всего, является причиной неиспользования правильного компилятора Java для нужной вам версии.Я замечаю, что в ваших установленных JRE есть JDK, расположенный в DevsuiteHome_1, не сказано, какая версия.Может быть, это использует Ant?

Это очень легко проверить.Вы запускаете муравей в Затмении.У Ant есть свои собственные параметры конфигурации, которые могут отличаться от вашего рабочего пространства.Чтобы проверить версию, которую использует Ant при запуске, выполните следующие действия:

Выполнить -> Внешние инструменты -> Конфигурация внешних инструментов -> нажмите на файл сборки Ant (должен быть создан, если вы уже запускали его один раз, если нет).вы всегда можете создать его здесь) -> выберите вкладку JRE -> проверьте, какая среда выполнения вы используете

0 голосов
/ 15 июля 2010

Ошибка компиляции 'javac: invalid target: 1.5' обычно вызвана несовместимостью исходного / двоичного уровня.Это означает, что вы пытаетесь скомпилировать исходный уровень JDK 5 с JDK 1.4 или менее.

Eclipse использует встроенный компилятор Java.Уровень, за которым следует компилятор, зависит от настроек проекта.Вы можете настроить уровень Java для каждого проекта или установить его по умолчанию на глобальном уровне.

В строке меню выберите «Окно» -> «Настройки».Выберите параметр Java-> Compiler.Установите уровень соответствия компилятора на 5.0.

0 голосов
/ 15 июля 2010

AFAIR Eclipse не использует свой собственный внутренний Java-компилятор при запуске файла Ant.Проверьте свои локальные пути и попытайтесь выяснить, какой javac вызван Ant.

0 голосов
/ 15 июля 2010

Вы можете создать задачу в своем файле сборки ant, которая запускает эквивалент java -version, так что вы получите представление о том, какой компилятор Java используется муравьем, запущенным Eclipse.

Подсказка: JRE по умолчанию составляет 1,6 JRE. Это нормально для кода , но не для компиляции. Только JDK содержит магию, необходимую для внешней компиляции (например, сделанной ant). Eclipse справляется с этим, включая инкрементный компилятор Java в свой собственный код (больше волшебства).

Спустя годы, я все еще не до конца понимаю, как Eclipse, ant и JDK взаимодействуют, поэтому, возможно, вам нужно немного поэкспериментировать.

...