linux tomcat部署 之 jre

 这两天需要在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.

原文地址:https://www.cnblogs.com/mxk-star/p/8688932.html