Tomcat6 и Java 7 - PullRequest
       23

Tomcat6 и Java 7

10 голосов
/ 07 марта 2012

В linux возможно ли развернуть веб-приложение, написанное на Java 7, на tomcat6?Если да, то какую конфигурацию нужно изменить, чтобы она работала?

Я попытался изменить переменную JAVA_HOME в файле tomcat6.conf и перезапустить, но он все еще использует 1.6 в соответствии с менеджером tomcatвеб-страница, и только приложения, написанные в 1.6 или ниже, развертываются правильно.

У меня оба jdk 1.6 и 1.7 установлены в разных местах.

Ответы [ 4 ]

9 голосов
/ 16 мая 2013

У меня была серьезная проблема, когда я компилировал свой сервлет с использованием java JDK 1.7.0, Tomcat не запускался из-за ошибки версии manor.major во время выполнения.

Чтобы Tomcat6 запускал ваши классы с использованием JDK1.7 выполните следующие действия:

  1. Откройте файл /etc/init.d/tomcat6 с правами root.

  2. В строке вы найдете переменную с именем JDK_DIRS83.

  3. Прокомментируйте это, добавив # в начале строки.

  4. Напишите ниже: JDK_DIRS="/usr/lib/jvm/java-1.7.0-openjdk-i386"

  5. Сохранить и перезапустить tomcat

4 голосов
/ 08 мая 2012

Я просто использую установки Tomcat по умолчанию без настройки каких-либо конфигурационных файлов, кроме tomcat-users.xml для входа в GUI.

Apache Tomcat 6.0.35 и 6.0.16 работают на JVM 1.7.0_03-b05 (Windows + Linux).

JAVA_HOME должен указывать на папку JDK;Например:

C:\Program Files\Java\jdk1.7 (Windows)

или

/usr/lib/jvm/java-6-sun (Ubuntu, эта ссылка указывает на установку JDK)

3 голосов
/ 07 марта 2012

Я столкнулся с подобной проблемой, и кажется, что JDK 1.7 не имеет обратной совместимости с Tomcat 6. Вам необходимо развернуть его в Tomcat 7 или перекомпилировать с использованием JDK 1.6.

1 голос
/ 15 января 2016

Я обнаружил, что это имеет значение , которое Java 7 использовалось Tomcat 6.

#JAVA_HOME=/usr/lib/jvm/java-7-openjdk  ## Did not work
JAVA_HOME=/usr/lib/jvm/java-7-oracle    ## DID WORK

Под словом «не работает» я имею в виду, что при загрузке моего веб-приложения я получил ClassNotFoundException: java.lang.AutoCloseable. Этот интерфейс новый с Java 7 .

Caused by: java.lang.NoClassDefFoundError: java/lang/AutoCloseable
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:751)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:249)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:395)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1349)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1320)
    ... 47 more
Caused by: java.lang.ClassNotFoundException: java.lang.AutoCloseable
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
        ... 58 more
...