在Windows和Linux上使用Java 8的Tomcat 7

我有以下麻烦:

我想用Apache Tomcat 7.0.54构build基于目标Java-8的Java Servlet。

当我在本地机器(Win-64,jdk build 1.8.0-b132)上运行它时,它可以很好地工作。

但是当我把它部署在生产(Debian GNU / Linux 7.5(wheezy),jdk build 1.8.0-b132,Tomcat 7.0.54-2)时,它会抛出:

Unsupported major.minor version 52.0 (unable to load class ru.tomtrix.fvds.servlets.ItemServlet) 

这意味着不支持的Java-8类。 那么对于同一版本的Tomcat的Windows和Linux实例有什么问题呢?

Solutions Collecting From Web of "在Windows和Linux上使用Java 8的Tomcat 7"

谢谢大家,我发现发生了什么事。 原来,JAVA_HOME没有被正确定义(如注销和Marko Topolnik所提到的)。 我打开了/ etc / default / tomcat7并更改了这个部分:

 # The home directory of the Java development kit (JDK). You need at least # JDK version 6. If JAVA_HOME is not set, some common directories for # OpenJDK, the Oracle JDK, and various Java SE 6+ versions are tried. #JAVA_HOME=/usr/lib/jvm/openjdk-6-jdk JAVA_HOME=/path/to/my/jdk 

…一切都开始工作! Tomcat默认使用OpenJDK之类的内部JDK吗?

每个Tomcat实例默认使用机器上的默认JDK。 您要么更改默认的JDK(如果您使用一个Tomcat实例),要么告诉Tomcat使用不同的JDK。

  1. 为每个TOMCAT实例设置不同的JDK:

catalina.sh使用JDK调用setenv.sh。 在CATALINA_BASE / bin中创建文件setenv.sh,如果不存在。 CATALINA_BASE代表Tomcat文件夹。 用gedit打开setenv.sh:

 sudo gedit setenv.sh 

写下这行:

 export JAVA_HOME=/path/to/your/JDK 

Tomcat建议在setenv.sh中导出JAVA_HOME,而不是在catalina.sh中。

  1. 在Ubuntu上更改默认的JDK:

    sudo update-alternatives –install / your / path / to / JDK / bin / java

要么:

 sudo update-alternative --install ${JAVA_HOME}/bin/java 

如果你已经定义了JAVA_HOME。

JAVA_HOME环境变量与Eclipse如何运行代码无关。 同样,您为项目显示的编译器设置也不会影响代码的运行方式。

相反,你需要看看你正在使用的运行配置,并检查那里的环境。 确保你使用的是Java 8,并且一切都会好的。 点击“运行”按钮旁边的三角形,然后选择“运行配置…”以打开包含所有设置的对话框。 然后查看JRE选项卡,并确保您使用的是正确的JRE。