Tomcat的JVM版本与JAVA_HOME不同。

7

我想把Tomcat的JVM版本改成7。所以我按照这里的指示:如何更改TOMCAT使用的JAVA版本? 并将我的JAVA_HOME更改为jdk7目录。

为了确保,这是命令:

$ echo $JAVA_HOME 
/usr/lib/jvm/java-7-openjdk-amd64

我重新启动了Tomcat。我想要验证,于是运行了从这里得到的命令:https://dev59.com/AG025IYBdhLWcg3whGax#10822328

$ /usr/share/tomcat7/bin/catalina.sh version
/usr/share/tomcat7/bin/catalina.sh: 1: /usr/share/tomcat7/bin/setenv.sh: -Dcom.sun.management.jmxremote: not found
/usr/share/tomcat7/bin/catalina.sh: 2: /usr/share/tomcat7/bin/setenv.sh: -Dcom.sun.management.jmxremote.port=1099: not found
/usr/share/tomcat7/bin/catalina.sh: 3: /usr/share/tomcat7/bin/setenv.sh: -Dcom.sun.management.jmxremote.authenticate=false: not found
/usr/share/tomcat7/bin/catalina.sh: 4: /usr/share/tomcat7/bin/setenv.sh: -Dcom.sun.management.jmxremote.ssl=false: not found
Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7
Using CATALINA_TMPDIR: /usr/share/tomcat7/temp
Using JRE_HOME:        /usr/lib/jvm/java-7-openjdk-amd64
Using CLASSPATH:       /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.28
Server built:   Apr 8 2014 08:47:08
Server number:  7.0.28.0
OS Name:        Linux
OS Version:     3.16.0-0.bpo.4-amd64
Architecture:   amd64
JVM Version:    1.7.0_79-b14
JVM Vendor:     Oracle Corporation

我看到JVM版本是1.7.0_79-b14。

但是,当我进入在线管理器时,看到这个: enter image description here

发生了什么?实际上,我开始整个过程的原因是我的war文件没有被部署,因为存在版本不匹配的问题:

Caused by: java.lang.UnsupportedClassVersionError: 
org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer : 
Unsupported major.minor version 51.0 (unable to load class 
org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer)

更新 根据要求,这里是运行java -version命令的输出结果:

$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-1~deb7u1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

也许 JRE_HOME 路径设置错误了? - MyPasswordIsLasercats
@MyPasswordIsLasercats 但是 JRE_HOME 与 JAVA_HOME 相同且正确。 - Moshe Shaham
请检查您的PATH环境变量。它应该包含JAVA_HOME/bin。 - Amila
在命令行中使用 java -version 命令检查版本。 - Amila
只需使用 echo $JRE_HOME 命令检查目标 JRE。 - SaviNuclear
显示剩余2条评论
2个回答

5
在*nix系统上,创建一个名为setenv.sh的文件,并写入以下内容:
JRE_HOME=/usr/java/jdk1.7.0_03/jre
CATALINA_PID="$CATALINA_BASE/tomcat.pid"

这个有点管用。我使用了export JRE_HOME="/usr/lib/jvm/java-7-openjdk-amd64"但没有第二行,问题都解决了! - Moshe Shaham

3
根据这篇文章,有四种不同的方法来更改JRE: 1. 通过更新JAVA_HOME或JRE_HOME更改JRE 此方法非常简单易行,但仅适用于从zip分发安装的Tomcat(与安装为服务的Tomcat相反)。
  • 如果仅设置了JAVA_HOME环境变量,则Tomcat将在指定为JAVA_HOME变量的JDK的一部分下运行。因此,我们通过更新该变量来更改Tomcat的JRE
  • 如果设置了JAVA_HOMEJRE_HOME环境变量,则优先使用JRE_HOME。以下是JRE_HOME变量的有效值示例(Windows上的路径):
JRE_HOME=C:\Program Files\Java\jre7

2. 使用“setenv”脚本更改JRE

我们可以通过在脚本文件setenv.bat(Windows)或setenv.sh(*nix)中设置JRE_HOME变量来更改Tomcat的JRE。默认情况下,这个文件是不存在的,所以要创建这个文件并将其放置在CATALINA_BASE\bin目录下(CATALINA_BASE是Tomcat安装目录)。

在Windows上,创建setenv.bat文件并添加以下内容:

set "JRE_HOME=C:\Program Files\Java\jdk1.7.0_03\jre"
exit /b 0

3. 在Tomcat服务管理器中更改JRE

对于在Windows上安装为服务的Tomcat安装,我们可以通过配置Tomcat服务管理程序(例如Tomcat7w.exe)中的Java虚拟机设置来更改运行Tomcat的JRE版本,如下图所示:

enter image description here

4. 在Eclipse IDE中更改JRE

要为Eclipse中的Tomcat运行时更改JRE版本,请转到菜单窗口>首选项。在首选项对话框中,打开服务器>运行时环境节点,选择列表中的一个Tomcat版本,然后单击“编辑”按钮。

链接的文章中查看更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接