简体   繁体   中英

Tomcat6 and Java 7

In linux, is it possible to have a web application written using Java 7 be deployed on tomcat6? If so, what configuration needs to be modified to allow it to work?

I have tried changing the JAVA_HOME variable in the tomcat6.conf file and restarting, but it is still using 1.6 according to the tomcat manager webpage, and only applications written in 1.6 or lower deploy correctly.

I have both jdk 1.6 and 1.7 installed in different locations.

I had a major problem when I compiled my servlet using java JDK 1.7.0, Tomcat wouldn't start up due of a runtime manor.major version error.

To make Tomcat6 run your classes using JDK 1.7 do the following:

  1. Open the file /etc/init.d/tomcat6 with root privilege.

  2. You will find a variable called JDK_DIRS at line 83.

  3. Comment it out by adding # at the beginning of the line.

  4. Write the following bellow it: JDK_DIRS="/usr/lib/jvm/java-1.7.0-openjdk-i386"

  5. Save and restart tomcat

I'm just using default Tomcat installations without setting up any config files except the tomcat-users.xml for GUI login.

Apache Tomcat 6.0.35 and 6.0.16 are each running on JVM 1.7.0_03-b05 (Windows+Linux).

JAVA_HOME must point to the JDK folder; eg:

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

or

/usr/lib/jvm/java-6-sun (Ubuntu, this link points to JDK installation)

我遇到了类似的问题,似乎JDK 1.7没有与Tomcat 6的向后兼容性。您需要将其部署到Tomcat 7或使用JDK 1.6重新编译。

I found it made a difference which Java 7 was used by Tomcat 6.

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

By "Did not work", I specifically mean, on booting up my webapp I got ClassNotFoundException: java.lang.AutoCloseable . This interface is new with 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM