Tomcat6和Java 7

在linux中,是否可以在tomcat6上部署使用Java 7编写的Web应用程序? 如果是这样,需要修改哪些配置才能使其工作?

我已经尝试更改tomcat6.conf文件中的JAVA_HOME变量并重新启动,但它仍然使用1.6根据tomcat管理器网页,并且只有1.6或更低版本的应用程序正确部署。

我在不同的位置安装了jdk 1.6和1.7。

当我使用Java JDK 1.7.0编译我的servlet时遇到了一个主要问题,由于运行时manor.major版本错误,Tomcat无法启动。

要使Tomcat6使用JDK 1.7运行您的类,请执行以下操作:

  1. 使用root权限打开文件/etc/init.d/tomcat6

  2. 您将在第83行找到名为JDK_DIRS的变量。

  3. 通过在行的开头添加#注释它。

  4. 写下面的内容: JDK_DIRS="/usr/lib/jvm/java-1.7.0-openjdk-i386"

  5. 保存并重启tomcat

我只是使用默认的Tomcat安装而没有设置任何配置文件,除了用于GUI登录的tomcat-users.xml

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安装)

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

我发现Tomcat 6使用Java 7有所不同。

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

通过“没有工作”,我特别指出,在启动我的webapp时,我得到了ClassNotFoundException: java.lang.AutoCloseable 。 此接口是Java 7的新增function 。

 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