基于tomcat运行jenkins常见的报错处理
jenkins.util.SystemProperties$Listener监听器配置错误;Fontconfig head is null;jdk11无jre文件;升级jdk11;JRE_HOME environment variable is not defined correctly;tomcat启动失败,Caused by: java.lang.ClassNotFoundException:
目录
1.jenkins.util.SystemProperties$Listener错误
2.java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration
3.There were errors checking the update sites: UnknownHostException:updates.jenkins.io
4.tomcat无法启动,Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger
1.jenkins.util.SystemProperties$Listener错误
[root@master tomcat-8.5.98]# tail -10f logs/localhost.2024-02-06.log
rg.apache.catalina.core.StandardContext.listenerStart 配置应用程序监听器[jenkins.util.SystemProperties$Listener]错误
java.lang.UnsupportedClassVersionError: jenkins/util/SystemProperties$Listener has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (无法载入的类 [jenkins.util.SystemProperties$Listener])
错误消息指出
jenkins.util.SystemProperties$Listener
类是由更高版本的Java Runtime编译的(类文件版本55.0),而当前运行环境的Java Runtime只识别到版本52.0的类文件。类文件版本55.0对应于Java 11,而版本52.0对应于Java 8。这意味着Jenkins WAR文件是为Java 11或更高版本编译的,而你的Tomcat服务器是在Java 8或更低版本的环境下运行的。
PS:当前系统为centos7,tomcat版本为8.5.98,jenkins的版本为2.426.3LTS,java8
可能单看tomcat服务的catalina.out日志看不出具体的问题,需要结合localhost日志排查
解决办法:升级java环境至11版本,即升级jdk11
jdk11下载地址(根据系统选择安装包):Java Downloads | Oracle
升级jdk11可能遇到的坑
启动tomcat时直接报错:
The JRE_HOME environment variable is not defined correctly
JRE_HOME=/home/jdk11/jre
This environment variable is needed to run this program这个错误消息表明系统中
JRE_HOME
环境变量没有被正确地定义。JRE_HOME
是一个环境变量,它指向 Java Runtime Environment (JRE) 的安装目录。当尝试运行某些 Java 程序或工具时,它们可能需要这个环境变量来找到正确的 JRE 安装位置。
PS:默认的jdk11目录下没有jre文件
[root@master ~]# cd /usr/local/jdk11/
[root@master jdk11]# ll -h
总用量 24K
drwxr-xr-x 2 root root 4.0K 2月 6 11:04 bin
drwxr-xr-x 4 root root 112 2月 6 11:04 conf
drwxr-xr-x 3 root root 132 2月 6 11:04 include
drwxr-xr-x 2 root root 4.0K 2月 6 11:04 jmods
drwxr-xr-x 72 root root 4.0K 2月 6 11:04 legal
drwxr-xr-x 6 root root 4.0K 2月 6 11:04 lib
drwxr-xr-x 3 root root 18 2月 6 11:04 man
-r--r--r-- 1 10668 10668 160 12月 20 06:09 README.html
-rw-r--r-- 1 10668 10668 1.3K 12月 20 06:09 release
解决:进入jdk11目录下,执行如下命令:
./bin/jlink --module-path jmods --add-modules java.desktop --output jre
[root@master jdk11]# ll -h
total 24K
drwxr-xr-x 2 root root 4.0K Feb 6 14:23 bin
drwxr-xr-x 4 root root 112 Feb 6 14:23 conf
drwxr-xr-x 3 root root 132 Feb 6 14:23 include
drwxr-xr-x 2 root root 4.0K Feb 6 14:23 jmods
drwxr-xr-x 8 root root 94 Feb 6 15:08 jre
drwxr-xr-x 72 root root 4.0K Feb 6 14:23 legal
drwxr-xr-x 6 root root 4.0K Feb 6 14:23 lib
drwxr-xr-x 3 root root 18 Feb 6 14:23 man
-r--r--r-- 1 10668 10668 160 Dec 20 06:09 README.html
-rw-r--r-- 1 10668 10668 1.3K Dec 20 06:09 release
之后可在/etc/profile文件添加环境变量(根据实际情况添加):
export JAVA_HOME=/path/jdk11
export JRE_HOME=/path/jdk11/jre # 替换为实际的JRE路径
export PATH=$JRE_HOME/bin:$PATH
2.java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration
解决办法:
1.可以连接互联网的情况下
yum install -y fontconfig,再重新启动tomcat
2.无法连接互联网
找一台可以连接互联网的机器,仅下载fontconfig的rpm包及其依赖包
yumdownloader --resolve --destdir=/root/java/ fontconfig dejavu-sans-fonts fontpackages-filesystem libexpat.so.1 libfreetype.so.6 libuuid.so.1
下载好后,打包成tar包,上传到jenkins服务器上并解压安装(可能环境不同,所需的依赖包也不一致,根据提示安装即可),再重新启动tomcat后,可正常访问登入Jenkins
[root@maste java]# rz
[root@maste java]# rpm -ivh --force ./*.rpm
Preparing... ################################# [100%]
Updating / installing...
1:fontpackages-filesystem-1.44-8.el################################# [ 10%]
2:dejavu-fonts-common-2.33-6.el7 ################################# [ 20%]
3:dejavu-sans-fonts-2.33-6.el7 ################################# [ 30%]
4:libuuid-2.23.2-65.el7_9.1 ################################# [ 40%]
5:libpng-2:1.5.13-8.el7 ################################# [ 50%]
6:expat-2.1.0-15.el7_9 ################################# [ 60%]
7:bzip2-libs-1.0.6-13.el7 ################################# [ 70%]
8:freetype-2.8-14.el7_9.1 ################################# [ 80%]
9:fontconfig-2.13.0-4.3.el7 ################################# [ 90%]
10:fontconfig-2.13.0-4.3.el7 ################################# [100%]
3.There were errors checking the update sites: UnknownHostException:updates.jenkins.io
出现 "There were errors checking the update sites: UnknownHostException: updates.jenkins.io" 错误通常意味着 Jenkins 无法连接到
updates.jenkins.io
,这可能是由于网络问题、DNS 解析问题、代理设置不正确、或者updates.jenkins.io
暂时不可访问。
可能是你本地的网络环境无法访问外网
解决方法:
1.检查网络、DNS
2.更换Jenkins 更新站点配置,默认的jenkins更新站点是国外的,可能无法访问,可更换国内的更新站点,如:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
登入jenkins,点击 管理jenkins===》插件==》高级设置,替换升级站点的URL提交
方法3离线安装jenkins插件
Jenkins插件离线下载地址:Jenkins Plugins
1.在搜索框输入需要下载的插件
2.选择对应的插件
3.点击‘releases’,找到对应版本下载
4.登入jenkins,Manage Jenkins(管理jenkins)-->System Configuration(系统管理)-->Plugins(插件)-->Advanced settings(高级设置)-->部署插件--》选择文件,点击部署--》重启jenkins;到此插件安装成功(不成功可能是插件的依赖插件没安装或者版本问题,根据报错解决即可)
4.tomcat无法启动,Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger
现环境:jdk11、tomcat-8.5.98、jenknis-2.426.3LTS
原委:升级jenkins版本到2.426.3LTS(需要jdk11),默认的jdk11目录下没有jre文件
操作:
1.手动生成jre文件
从JDK9开始, 引入了模块化, 可以根据需要生成一个runtime, 不再单独提供jre, 需要什么模块, 自己生成就好了, 可以自己定制jre的。
进入jdk11目录下,执行如下命令:
./bin/jlink --module-path jmods --add-modules java.desktop --output jre
2.修改环境变量,vim /etc/profile
原环境变量:
export JAVA_HOME=/home/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}现环境变量:
export JAVA_HOME=/home/jdk11
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
启动tomcat:
表面上启动成功
[root@jenkins ~]# bash /home/apache-tomcat-8.5.98/bin/startup.sh
Using CATALINA_BASE: /home/apache-tomcat-8.5.98
Using CATALINA_HOME: /home/apache-tomcat-8.5.98
Using CATALINA_TMPDIR: /home/apache-tomcat-8.5.98/temp
Using JRE_HOME: /home/jdk11/jre
Using CLASSPATH: /home/apache-tomcat-8.5.98/bin/bootstrap.jar:/home/apache-tomcat-8.5.98/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.实际上:日志报错了
# tail -10f /home/apache-tomcat-8.5.98/logs/catalina.out
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
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:130)
at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:153)
at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:208)
at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:52)
Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 6 more
解决方法:
1.给tomcat指定jre路径,修改setclasspath文件,在代码最前添加
# vim /home/apache-tomcat-8.5.98/bin/setclasspath.sh
JAVA_HOME='/home/jdk11'
JRE_HOME='/home/jdk11'重新启动tomcat,启动成功,可以正常访问登入jenkins页面(亲测成功)
2.修改环境变量,给jre指定jdk路径即可
原环境变量:
export JAVA_HOME=/home/jdk11
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}现环境变量:
export JAVA_HOME=/home/jdk11
export JRE_HOME=${JAVA_HOME}
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}重新启动tomcat,启动成功,可以正常访问登入jenkins页面(亲测成功)
更多推荐
所有评论(0)