这两天需要在ubantu服务器部署一下tomcat, 本以为轻轻松松就能搞定的事情但是一直不能成功,就tomcat的安装步骤其实就是下载解压的工程,奈何,每次 运行 ./startup.sh之后 显示的都是
using: ...
using:...
tomcat started.
之后的第一反应就是看看是不是端口被占用了,然后使用 netstat -ap | grep 8080,查看之后没有显示,就以为端口这边没有问题,没有仔细查看,之后就是重复的更换tomcat的版本了(后来自己意识到这是多么错误的想法,最根本的问题应该是在自己),每次都出现重复的工作之后,无意间看到了一个人的博客说:查看一下自己logs文件夹下面的文件看看是不是端口被占用了,才想起来查看日志文件,一看吓一跳,日志文件竟然只有赤裸裸的一句话“
./catalina.sh: 1: eval: /opt/jdk/jre/bin/java: not found
自己也是很好奇,自己已经在电脑上装过jdk了,理应包含jre(java runtime enviroment)的,而且自己之前一直也在用idea写java程序没有出现jre的问题,但是去jdk安装目录查看了一下,发现确实没有安装jre,就去官网单独下载了jre放到了jdk的安装目录下面,之后重新启动tomcat发现还是started,但是无法访问,又查看了一下logs文件夹,发现logs文件下面额文件变多了,意识到自己可能快要成功就查看了一下 catalina.out日志文件,看了之后发现正常启动额过程中 8080 端口已经被占用了:
java.net.BindException: Address already in use (Bind failed) <null>:8080
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:413)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:728)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:452)
at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:840)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:654)
at org.apache.catalina.startup.Catalina.load(Catalina.java:679)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
Caused by: java.net.BindException: Address already in use (Bind failed)
at java.base/java.net.PlainSocketImpl.socketBind(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.bind(Unknown Source)
at java.base/java.net.ServerSocket.bind(Unknown Source)
at java.base/java.net.ServerSocket.<init>(Unknown Source)
at java.base/java.net.ServerSocket.<init>(Unknown Source)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:400)
... 17 more
对于java这种一个错误报一大堆错误的。。。。有时候挺无奈的。 好在最后找到的错误的原因,就是安装tomcat可以没有jdk但是必须要有jre.