2009-09-16 3 views
1

Я пытался скомпилировать приложение Grails, ссылающееся на сторонние JAR на Mac OSX. Хотя JRE и JDK моей системы настроены на Java 1.6, я всегда получал Compilation error: java.lang.UnsupportedClassVersionError: Bad version number in .class file при доступе к классам в JAR. Также при тестировании существующего приложения Grails используется статистика по умолчанию, показывающая, что она работает с Java 1.6. Поэтому у меня действительно не было больше идей, чем пытаться изменить настройки Java в Eclipse - я думал, что это глупо, поскольку я не использую Eclipse для разработки этого приложения, но voila - теперь компиляция моего приложения по команде линия работает просто отлично!Каким образом параметр Eclipse JDK влияет на настройку JDK системы

Может ли кто-нибудь объяснить мне, что Eclipse делает здесь за кулисами? Я вручную установил JAVA_HOME без эффекта.

+0

> Я только что изменил по умолчанию JRE в Exclipe: если вы ссылаетесь на объявленную «установленную JRE», которая не должна иметь побочных эффектов (кроме повторной компиляции существующих проектов, на которые ссылаются в Eclipse ... но вы сказали, что у вас их нет? Поэтому почему Eclipse был открыт в первое место?) – VonC

+0

Открытие Eclipse (и дальнейшее развитие t в Eclipse) была последней идеей, которую я имел, поскольку env vars обрабатываются по-разному в eclipse - но я даже не дошел до того, чтобы скомпилировать ее в Eclipse - я просто изменил настройку JRE по умолчанию в Eclipse на 1.6 (команда строка JAVA_HOME была уже 1.6 раньше), а затем попробовал (без большой надежды) скомпилировать ее в командной строке еще раз - и это сработало. Я не могу объяснить. – david

ответ

4

JDK (JAVA_HOME), используемый для запуска eclipse, не обязательно используется для составления вашего проекта.

Чтобы увидеть, что JRE вы у можете выбрать для вашего проекта, проверьте предпочтения

General > Java Installed JRE 

По умолчанию, если вы не добавили JRE, только один объявленную будет один используется для запущенного затмения (который может быть определен в вашем eclipse.ini).
Вы можете добавить любую другую JRE, которая вам нужна, в том числе совместимую с вашим проектом.

http://help.eclipse.org/juno/topic/org.eclipse.jdt.doc.user/tasks/images/task-add_jre_std_vm.PNG

После этого, вам нужно будет проверить в свойствах проекта (или в общих настройках), что используется JRE, с каким уровнем соответствия:

http://www.standartux.fr/public/Java/Preferences.png

+0

Спасибо за быстрый ответ, но я не использовал Eclipse для этого конкретного проекта раньше - только Command Line и TextMate! Здесь компиляция не работала из-за ошибки «плохой версии», поскольку я запускал проект Java 6 с Java 5. Но я этого не делал - все выглядело как Java 6. Но потом я сделал то же, что вы упомянули, - я просто изменил JRE по умолчанию в Exclipse, но НЕ импортировал проект для затмения и НЕ скомпилировал его с помощью eclipse. Я все еще компилировался из командной строки с помощью «grails compile» - и теперь компиляция suddendly преуспела без каких-либо ошибок. Звучит странно. – david

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