简体   繁体   English

Tomcat6和Java 7

[英]Tomcat6 and Java 7

In linux, is it possible to have a web application written using Java 7 be deployed on tomcat6? 在linux中,是否可以在tomcat6上部署使用Java 7编写的Web应用程序? 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. 我已经尝试更改tomcat6.conf文件中的JAVA_HOME变量并重新启动,但是根据tomcat管理器网页仍然使用1.6,并且只有1.6或更低版本的应用程序正确部署。

I have both jdk 1.6 and 1.7 installed in different locations. 我在不同的位置安装了jdk 1.6和1.7。

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

To make Tomcat6 run your classes using JDK 1.7 do the following: 要使Tomcat6使用JDK 1.7运行您的类,请执行以下操作:

  1. Open the file /etc/init.d/tomcat6 with root privilege. 使用root权限打开文件/etc/init.d/tomcat6

  2. You will find a variable called JDK_DIRS at line 83. 您将在第83行找到名为JDK_DIRS的变量。

  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" 写下面的内容: JDK_DIRS="/usr/lib/jvm/java-1.7.0-openjdk-i386"

  5. Save and restart tomcat 保存并重启tomcat

I'm just using default Tomcat installations without setting up any config files except the tomcat-users.xml for GUI login. 我只是使用默认的Tomcat安装而没有设置任何配置文件,除了用于GUI登录的tomcat-users.xml

Apache Tomcat 6.0.35 and 6.0.16 are each running on JVM 1.7.0_03-b05 (Windows+Linux). Apache Tomcat 6.0.35和6.0.16分别在JVM 1.7.0_03-b05(Windows + Linux)上运行。

JAVA_HOME must point to the JDK folder; JAVA_HOME必须指向JDK文件夹; eg: 例如:

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

or 要么

/usr/lib/jvm/java-6-sun (Ubuntu, this link points to JDK installation) /usr/lib/jvm/java-6-sun (Ubuntu,此链接指向JDK安装)

我遇到了类似的问题,似乎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 7使用的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 . 通过“没有工作”,我特别指出,在启动我的webapp时,我得到了ClassNotFoundException: java.lang.AutoCloseable This interface is new with Java 7 . 此接口是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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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