Tomcat和JDK版本的对应关系

摘要:
当我们讨论Tomcat和JDK版本之间的对应关系时,我们实际上讨论了两个问题。对于第一个问题,您可以通过官方网站上的图的最后一列获得答案:因此,如果您安装Tomcat 7,则需要安装JDK1.6和更高版本才能正常启动Tomcat。对于第二个问题,我们应该明确第一个问题和第二个疑问有相同的基本答案:低版本JDK不能运行高版本JDK编译的代码。因此,如果您安装Tomcat 7+JDK1.7的组合,用JDK1.7和更早版本编写的网站可以正常运行,但用JDK1.8编写的网站不能正常运行。

当我们在谈论Tomcat与JDK版本的对应关系的时候,我们实际上在讨论两个问题。

第一个是,我们想安装了某个版本的Tomcat(比如Tomcat7),需要安装哪个版本的JDK,才能把Tomcat运行起来。

第二个是,如果我们安装某个Tomcat+JDK组合(比如Tomcat7+JDK1.7),能否把我们某个版本JDK(比如JDK1.6)编写的网站给运行起来。

对于第一个问题,可以通过官网的这张图最后一列得到答案(下载的Tomcat的RUNNING.txt和RELEASE-NOTES也有当前版本所需JDK说明):

Tomcat和JDK版本的对应关系第1张

所以如果安装Tomcat7要安装JDK1.6及之后版本才能正常启动Tomcat(如果使用不匹配的jdk比如Tomcat7用jdk1.5执行startup.sh输出也提示启动成功,但其实进程没成功启动的,查看logs/catalina.out会看到报错:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file)

对于第二个问题,其实到此我们要言明,第一个问题和第二个问题都有一个同样本质的答案:低版本JDK无法运行高版本JDK编译的代码。

所以如果你安装了Tomcat7+JDK1.7这个组合,那么JDK1.7及之前版本JDK编写的网站可以正常运行,JDK1.8编写的不可以。

(同理我们可以推测,Tomcat7是用JDK1.6编译的,Tomcat8是用JDK1.7编译的,Tomcat9是用JDK1.8编译的)

下图是中我用JDK1.7编译了一个HelloWorld程序,可以看到JDK1.7和1.8运行正常,而JDK1.6运行报错(Unsupported major.minor version 51.0):

(51.0是内部编号,JDK1.4--48.0,JDK1.5--49.0,JDK1.6--50.0,JDK1.7--51.0,JDK1.8--52.0)

Tomcat和JDK版本的对应关系第2张

参考:

http://java12345678.iteye.com/blog/2257533

http://blog.csdn.net/sum__mer/article/details/52452432

http://java12345678.iteye.com/blog/2257533

http://www.oschina.net/question/207494_84715

免责声明:文章转载自《Tomcat和JDK版本的对应关系》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mac 安装gitVBS以管理员身份运行自身下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Delphi7中编译提示“Unsafe type 'PChar'”的原因及处理办法

delphi7中加入了对.net的支持 在.net中是没有指针的(托管环境中),所以指针都是不安全的,不符合.net规范 所以d7里有警告,可以不管它 DELPHI7已经考虑到了移植到点NET的问题,至于为什么有的人遇到,有的人没有遇到,那是因为各人的编译选项不同。在Project菜单下选Options“Compiler Messages”,最下面三个选项...

centos7.6离线安装jdk

一、环境 centos7.6 二、准备 1、离线下载jdk-8u261-linux-x64.tar.gz 2、上传压缩包到/usr/local/src目录下 三、安装 1、卸载CentOS自带的openJDK rpm -qa|grep java 如果系统有自带的jdk,则使用以下指令卸载 rpm -e --nodeps jdk-xxx 如果系统没有自带...

RocketMQ的安装配置:配置jdk环境,配置RocketMQ环境,配置集群环境,配置rocketmq-console

RocketMQ的安装配置 演示虚拟机环境:Centos64-1 (D:linuxMorecentos6_64) root / itcast : 固定IP 192.168.52.128 一,配置JDK环境 1,解压jdk到指定的目录 tar -xvf jdk-8u171-linux-x64.tar.gz -C /usr/local cd /usr/loca...

Win32汇编环境搭建教程(MASM32 SDK)

一、说明 常用的32位汇编编译器有微软的MASM、Borland的TASM和NASM。 编译器 开发者 优点 缺点 MASM 微软 微软自家软件和系统兼容性好;支持invoke/.if等伪指令将汇编变得和C++差不多 就一个编译器,没有资源编译器和链接器,也没有头文件 TASM Borland 支持伪指令,有资源编译器和链接器 没有Window...

jboss6.3安装

 jboss6.3安装 JDK、JBOSS以及winSCP传输工具下载 JDK下载链接: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 单选Accept License Agr                         JBOS...

JVM学习笔记之CodeCache

一. CodeCache简介 从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。当然JNI(Java本地接口)的机器码也放在codeCache里,不过JIT编译生成的native code占主要部分。 大致在JVM中的分布如下: 大家都知...