Tomcat与JSP环境搭建问题
Tomcat与JSP环境搭建问题
由于某些需求,今天在虚拟机上尝试自己搭建JSP环境,其中遇到了许多问题,在求助多方帮助解决了这些问题后,成功的打开了“小猫”页面,并实现了第一个HelloWorld.jsp的脚本,现在将搭建环境过程中遇到的问题总结如下,虽然这些问题不能包山包海,但还是希望对你有所帮助。
在开始环境搭建之前一定要注意版本问题,由于版本不匹配导致的搭建失败占主要原因,所以一定要注意版本问题!注意版本问题!注意版本问题!…重要的事情说n遍。
各种适配版本:
这一部分主要是讲JDK、Eclipse和Tomcat的各种发行版本。
Tomcat
Tomcat最新发行的版本,也就是9.0.10版本,最高支持到JAVA8以及旧版本,网页链接
如上图所示,这里的8.0.53版本已经被8.5.32版本替代,官方推荐下载最新发行的版本,因为给JAVA提供了更稳定可靠的支持,支持的JAVA版本在最后一列有提示。
Eclipse
作为JAVA的集成开发平台,Eclipse至今已经发行了很多版本,每个版本有不同的JAVA独立开发平台(例如EclipseIDEforJavaEE Developers、EclipseIDEforJavaDevelopers等),支持的JAVA版本有所不同,具体的版本支持如链接所示,需要注意的是,Eclipse的每个版本都有最低的JAVA版本支持,并不是无限制的向下兼容,以最新发布的Eclipse4.8(Photon)为例,他的支持信息如下图所示
从上图我们可以看出,这个版本的Eclipse支持的最低版本为JAVA8,最高已经可以支持JAVA10。相比之下,Tomcat支持的JAVA版本比较旧,可以在Eclipse内部添加Tomcat服务,因此,可以安装多个JDK,然后在Eclipse根据Tomcat的支持信息选择对应的JDK版本来配置服务,以Eclipse4.4(Luna)为例配置方法如下图所示
还可以为Eclipse设置独立的JDK编译器,还是以Eclipse4.4(Luna)为例,如下图所示
虽然在Eclipse内部配置不同版本的JDK,但是将启动Eclipse所需要的环境变量中的JAVA路径,改为低于Eclipse最低要求版本的JDK路径(如JDK1.6)时,启动Eclipse会报如下错误(图是我从网上粘过来的,原问题是32位与64位JDK版本不兼容,JDK版本号不兼容也会产生类似的报错信息)
这里已经写明启动时需要的最低JAVA版本是JAVA6 64位,任何低于这个版本或者高于Eclipse最高支持版本的JDK路径都会报错。
需要注意的是,虽然Eclipse与Tomcat支持相同的JAVA版本,但是仍有可能无法在Eclipse内部添加Tomcat服务,以Eclipse4.4(Luna)为例
虽然Tomcat8.0.53版本和8.5.32版本均支持JAVA7,但上图所示并不能添加8.5.32版本。
JDK
JDK作为整个JAVA开发的核心,整合了JVM与JAVA系统类库,因此JDK的版本影响了整个开发环境的搭建,JAVA最新的发行版本是10.0.2,这是其他版本的下载链接,之所以把JDK版本放到最后说,是因为不同的Eclipse和Tomcat版本支持的JDK各不相同,因此选择JDK时要尽量满足他们所需的版本。需要注意的是,JDK下载完成并解压后,一般在解压后的根目录下会有JRE的独立文件夹,但某些新版本的JAVA将JRE整合到了JDK中,因此在配置环境变量时会有所不同(例如JRE路径问题)。
问题总结:
这一部分并不会过多的提及JAVA环境配置与安装Eclipse的内容,网上有很多相关的教程,可以自行搜索,只要注意版本兼容问题即可。
这个是我的配置:
Linux:ubantu18
JDK:1.7.0_80
Tomcat:8.0.32
Eclipse:Eclipse Luna(4.4)
(1)更换JDK导致Eclipse启动失败
为了体验JAVA10的新特性,之前使用的是jdk-10.0.2_linux-x64_bin.tar.gz和EclipsePhoton,但是由于安装Tomcat的需要,将JAVA10替换为JAVA7,这时重新启动Eclipse就产生如下报错信息
这个问题的产生原因如上一部分所述,这里就不过多提及了,即重装适配低版本JAVA的Eclipse,或者使用多个JDK并将环境变量中的JAVA路径改为JAVA10的路径。
(2)执行Tomcat的start.sh脚本失败
这个问题是由于没有配置好环境变量和JDK版本,实际操作中并没有产生这个问题,因此就不贴图了,此问题的解决方法是,重新配置/etc/profile或~/.bashrc中的环境变量,若环境变量配置无误,可以更换其他版本的JDK。
(3)Tomcat的start.sh脚本执行成功,但是命令行的返回信息有误
这个问题很是奇葩,估计没有多少人遇到过,但还是要做一下解释。之前提到过,由于替换JDK版本的需要,将之前profile中的环境变量重新设置为新的JDK路径并重启客户机后(配置如下)
出现了这么一种情况,start.sh可以正常启动,但是返回信息中的JRE_HOME仍为原来的路径,使用sourceprofile指令,在当前bash中的变量已被成功更改,退出当前bash再重新打开终端后,显示当前用户的JRE_HOME变量并没有更改为profile中的值,但JDK和JRE的版本确实显示为更新后的版本(如下图)。
由于profile文件中的配置对全体用户生效,而当前用户环境变量并没有被成功更改所导致的问题,可以通过在.bashrc中加入和profile中相同的环境变量配置信息(如下图所示问题解决)。
(4)Tomcat的start.sh脚本执行成功,但是shutdown.sh脚本执行失败,“小猫”页面报错404
这个问题貌似也很奇葩,其返回的错误信息为
这是由于Tomcat与JRE版本不兼容而导致的编译报错,推荐的解决方法是重新安装合适的Tomcat或JDK,对shellscript熟悉的也可以更改Tomcat根目录下的启动脚本。
(5)Tomcat的start.sh脚本执行成功,shutdown.sh脚本执行成功,但是“小猫”页面报错404
这个问题我没有遇到过,看网上的评论一般是由于当前端口被占用或防火墙设置问题,如果在尝试其他端口(默认8080)仍返回404,并且确认防火墙设置无误,可以选择关闭防火墙(虽然系统是默认关闭防火墙的)重新刷新页面。
(6)其他问题
如果还有什么其他问题,可以在下方评论区发问,我会尽我所能的帮你解决问题。