记Ubuntu下离线安装jdk和Tomcat

奥黛丽·逐爱者
2024-04-19 / 0 评论 / 0 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年04月28日,已超过144天没有更新,若内容或图片失效,请留言反馈。

下载安装包

Tomcat:
https://dlcdn.apache.org/tomcat/
javaJDK
https://www.oracle.com/cn/java/technologies/downloads

将下好的安装包传到服务器/tmp/目录。

安装JKD1.8

创建目录

mkdir /usr/local/jdk1.8

解压缩到指定目录(以jdk-8u144-linux-x64.tar.gz为例)

tar -xvf jdk-8u144-linux-x64.tar.gz -C /usr/local/jdk1.8/

修改环境变量

sudo vim ~/.bashrc

在文件末尾追加下面内容:

#set oracle jdk environment
export JAVA_HOME=/usr/local/jdk1.8  ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH  

使环境变量马上生效:

source ~/.bashrc

系统注册此jdk

sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.8/bin/java 300
# /usr/local/jdk1.8/bin/java是刚刚安装的路径

查看java版本,看看是否安装成功:

java -version

如果你安装了多个版本的jdk,你可以通过以下命令在这些版本之间切换:

sudo update-alternatives –config java

JDK17没有jre目录的解决方案

安装jdk17成功,运行Tomcat11报错

The JRE_HOME environment variable is not defined correctly
JRE_HOME=/usr/local/jdk-17/jdk-17.0.11/jre
This environment variable is needed to run this program

lv6huh5q.png
百度
从JDK9开始, 引入了模块化, 可以根据自己的需要生成一个runtime, 所以就不再单独提供jre了
得把所谓的jre和模块搞出来~

以jdk在 /usr/local/jdk-17 为例

cd /use/local/jdk-17

运行以下指令

./bin/jlink --module-path jmods --add-modules java.desktop --output jre

之后生成jre目录和文件
好,运行Tomcat

root@ixjkj-standard-pc-i440fx-piix-1996-1:/usr/local/tomcat-11/apache-tomcat-11.0.0-M19/bin# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat-11/apache-tomcat-11.0.0-M19
Using CATALINA_HOME:   /usr/local/tomcat-11/apache-tomcat-11.0.0-M19
Using CATALINA_TMPDIR: /usr/local/tomcat-11/apache-tomcat-11.0.0-M19/temp
Using JRE_HOME:        /usr/local/jdk-17/jdk-17.0.11/jre
Using CLASSPATH:       /usr/local/tomcat-11/apache-tomcat-11.0.0-M19/bin/bootstrap.jar:/usr/local/tomcat-11/apache-tomcat-11.0.0-M19/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

好像启动了~
查看汤姆猫运行日志cat catalina.out又报错误

root@ixjkj-standard-pc-i440fx-piix-1996-1:/usr/local/tomcat-11/apache-tomcat-11.0.0-M19/logs# cat catalina.out
WARNING: Unknown module: java.rmi specified to --add-opens
Exception in thread "main" java.lang.NoClassDefFoundError: java/util/logging/Logger
        at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:61)
        at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:181)
        at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:133)
        at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:156)
        at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:211)
        at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:49)
Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
        ... 6 more

lv6hsbnw.png

继续来百度……

修改 /etc/profile文件

nano /etc/profile

加入变量
在文件末尾追加下面内容:

# /etc/profile文件末添加如下, 解决jre找不到的问题
JAVA_HOME=/usr/local/jdk-17/
JRE_HOME=$JAVA_HOME
CLASSPATH=$JAVA_HOME/lib
PATH=$JRE_HOME/bin:$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH

使环境变量马上生效:

source /etc/profile

安装Tomcat

下载并上传Tomcat压缩包到服务器/tmp目录为例

创建目录
mkdir /usr/local/tomcat-9
解压缩到/usr/local/tomcat-9/目录下
tar -xvf apache-tomcat-9.0.88.tar.gz -C /usr/local/tomcat-9/
执行 startup.sh 文件

下面进入到 Tomcat 文件夹的 bin 目录,执行 startup.sh 文件

执行这个文件有两种方式,任选其一:

sh startup.sh
 
./startup.sh
验证Tomcat启动是否成功
  • 查看启动日志

使用命令查看 Tomcat 安装目录下的 logs 目录下的 catalina.out 文件,这个是Tomcat的日志文件。

可以使用以下任一命令查看:

cat catalina.out

more catalina.out
  
tail -50 catalina.out

启动时遇到的问题 - catalina.out 文件报错java.io.EOFException:
意思大概就是上次启动了Tomcat未正常关闭,这次启动找不到上次启动的项目的Session
但是我根本没有部署过项目,很迷!,但是这里不影响使用。

  • 查看启动进程

使用如下命令查看是否有Tomcat 的启动进程,如果有,有对应的进程号:

ps -ef | grep tomcat
访问 Tomcat 服务

localhost:8080

停止 Tomcat 服务

可以使用下面的方式停止Tomcat服务:

sh shutdown.sh

或者执行这个命令:

./shutdown.sh

如果执行上面的命令失败了,使用下面的命令结束 Tomcat 进程:

首先查询 Tomcat 进程:

ps -ef | grep tomcat

强制杀死进程(不推荐):

kill -9 进程号
#多的话全kill了
kill -9 `ps -ef|grep tomcat|grep -v grep|awk '{print $2}'`
0

评论 (0)

取消