Несоответствие версий JVM при развертывании веб-приложения между Eclipse и Tomcat

У меня есть веб-приложение, созданное и скомпилированное в Eclipse, которое я хочу развернуть на моем Tomcat 6 (я хочу сделать это вручную), и я получаю исключение UnsupportedClassVersionError, которое означает, что запущенный JVM tomcat старше, чем мой eclipse это работает. После некоторой проверки я вижу, что в окне диспетчера tomcat написано: JVM Version-1.5.0_20-b02, а в моем eclipse: Java-Installed JREs- по умолчанию указывает на JDK, который определен как мой JAVA_HOME env-var и один используется на моем пути как env-var (это 1.6.013).

Мой вопрос: как я могу сказать tomcat использовать мой JDK? Я думал, что он должен был использовать переменную JAVA_HOME, но она определена правильно, и если я выдаю java-версию в командной строке, я получаю правильную расширенную версию.

Сделав еще немного проверки, я увидел, что в библиотеке tomcat есть папка JRE, которую, как я предполагаю, использует tomcat, но если я удалю эту папку, Tomcat не запустится (даже после того, как я определил env-var JRE_HOME и указал ее в JRE, указанную в моем JDK). Так что я в растерянности.

Спасибо за любую помощь приземлился Ittai

Обновление: как кто-то спросил меня, я использую надстройку xampp tomcat.


person Ittai    schedule 03.10.2009    source источник
comment
Взгляните на этот FAQ — error-exception.org/   -  person kv-prajapati    schedule 03.10.2009


Ответы (3)


В стандартной загрузке Tomcat 6.0.20 с Apache нет JRE. Возможно, вы используете предварительно упакованную/поддерживаемую версию, такую ​​как Spring ship?

Либо это, либо кто-то изменил стандартный запуск Tomcat, чтобы предпочесть поставляемую JRE. Как запустить Томкэт? Проследите сценарии запуска и посмотрите. Или просто повторно загрузите Tomcat 6 и начните заново, зная, что у вас каноническая установка.

person SteveD    schedule 03.10.2009
comment
Я использую версию надстройки xampp tomcat - person Ittai; 03.10.2009
comment
Вы просматривали сценарии запуска? Вот файл setenv.bat, который устанавливает переменную среды JRE. Либо измените сценарий, либо замените прилагаемую JRE на нужную версию, либо перейдите на Java 1.5. - person SteveD; 03.10.2009
comment
Я просмотрел некоторые сценарии, но не тот, о котором вы говорите, я просмотрю его, когда вернусь домой. Идея замены JRE может заключаться в том, что я сделаю, если не найду более прямого способа сделать это. Спасибо - person Ittai; 03.10.2009
comment
Большое спасибо, в setenv.bat было установлено JRE_HOME=%CATALINA_HOME%\jre. Поэтому я изменил его на JRE_HOME=%JAVA_HOME%\jre. Кстати, когда я оставляю это поле пустым, сервер говорит, что ни JAVA_HOME, ни JRE_HOME не определены, хотя эхо в выводах cmd указывает, что они определены. Благодарю. - person Ittai; 04.10.2009
comment
Это связано с тем, что файл setenv.bat сбрасывает обычные переменные среды Java, чтобы убедиться, что среда настроена так, как она ожидает. - person SteveD; 04.10.2009

Вы можете либо изменить настройку Eclipse -> Java -> Compiler для компиляции для Java 1.5 или более ранней версии, либо вы можете установить другую JRE в своей системе, соответствующую версии, используемой Tomcat, и указать Eclipse использовать THAT для этого проекта. Eclipse -> Java -> Установленные среды выполнения Java.

person Thorbjørn Ravn Andersen    schedule 04.10.2009

Я бы сказал, что более вероятно, что JDK сервера приложений будет исправлен, и IDE должна переключить свой JDK, чтобы он соответствовал серверу приложений. Не настраивайте Tomcat; заставьте Eclipse указывать на тот же JDK, который использует сервер приложений.

У вас не всегда есть контроль над сервером приложений, но вы всегда можете настроить свою IDE.

person duffymo    schedule 03.10.2009
comment
В моем случае я всегда контролирую сервер приложений, поскольку он является частью пакета, который я доставляю, но спасибо. (кроме того, мне нужна эта версия JDK по другим причинам разработки) - person Ittai; 03.10.2009
comment
Мои доводы по-прежнему актуальны. Ваш случай не является правилом. И должно быть достаточно легко переключаться между JDK для каждого проекта. Если Eclipse не может этого сделать, возможно, вам следует перейти на лучшую IDE — IntelliJ. - person duffymo; 03.10.2009