ZrLog war 包的常见问题

/ 2015-05-09

注意, ZrLog 新版本中,已经不再会有 war,如果是自用请放弃 war 的部署方式,使用 docker 或者直接运行 graalvm native image 都是不错的方式

这篇文章主要记录很多网友,为了初学者 自动化测试/安全测试/运维 的朋友遇到的问题的处理方式

深知初学者不易,请仔细浏览

ZrLog 推荐使用最新版本的 Ubuntu 24.04 和 mariadb 进行部署,建议遇到安装问题的朋友,也使用此环境进行部署

问题1: 导入 war 后,也自动解压了,但是还是提示 404

可能原因是按照教材安装了的 tomcat,教材使用 docker pull tomcat:9 拉到的版本是 2021 年的 tomcat 镜像版本,里面内置的 jdk 版本是能正常运行 zrlog,但是随着 tomcat 的更新维护, tomcat9 的镜像默认已经使用了 jdk21

由于的 web 框架使用 JFinal 引入了 java.lang.Compiler 这个类在 JDK21 版本里面以及移除了,所有导致了无法正常加载 容器,故 tomcat 访问出现 404 的错误页面

虽然 JFinal 已经在新的版本里面以及兼容(支持)了 jdk21,但 ZrLog 已经停止了 war 版本的维护,所以解决办法只能从环境入手了

去除 Compiler 引用,JDK 21 中已删除该类

解决方式一

使用 jdk17 的版本解决这个 404 的问题

国际通道: docker pull tomcat:9.0.97-jdk17
国内通道: docker pull registry.cn-chengdu.aliyuncs.com/hibegin/tomcat:9.0.97-jdk17

这个版本的容器即可,如果没有使用 docker 容器请自行降级到 jdk17 再看看是否正常

解决方式二

不少网友用着 Linux 3.x 的内核,请不要抱着 CentOS 不放了,请光明正大的使用 Ubuntu, Ubuntu 也免费,且两年一个 LTS

直接使用 ZrLog 最新的安装包,放弃 tomcat 容器,管他 Java 什么版本,Tomcat 什么版本得

有网友还在购买镜像地址,镜像压缩包,所有 ZrLog 在 docker 中央源不流畅(无法访问的时候),就第一时间接把 镜像放到国内阿里云上,供大家学习 ZrLog 使用

安装脚本

https://gitee.com/94fzb/zrlog-docker

数据库

docker pull registry.cn-chengdu.aliyuncs.com/hibegin/mariadb:latest

启动数据库服务

  1. # 注意,root password 记得设置一个安全信足够高,同时自己不会忘记的
  2. docker run -d \
  3. -e MYSQL_ROOT_PASSWORD="bix1chieCah9Aiwo" \
  4. -p 3306:3306 \
  5. --restart unless-stopped \
  6. --log-opt max-size=10m --log-opt max-file=5 \
  7. registry.cn-chengdu.aliyuncs.com/hibegin/mariadb:latest

问题2: 运行成功后,一直在加载页面转圈

可能原因是使用较新的 webserver 比如 tomcat的9 以后的版本,具体原因是 tomcat10 开始使用新的 Jakarta 的包名导致的,目前解决版本是使用 tomcat9 的版本即可

问题3: 输入了正确的密码还是提示了密码错误

本质原因还是 Docker 网关问题

可能原因1 被错误的提示误导

在使用书中的提供的资料包版本( 2.1.1), 安装过程中出现 mysql 的用户名和密码不对的情况,实际情况用户名和密码是对的,只是没有填写正确的主机地址

解决办法,请先升级到最新的程序版本试下(最新的版本已经能正确的提示是连接地址问题,还是数据库用户名/密码错误的情况)

最新版本下载地址

关于主机地址的填写

由于书使用的是将 zrlog 和 mysql 都放在了 docker 容器内,这样导致了填写 127.0.0.1 可能连接不通的情况,要根据自己的实际情况填写 docker 的网关地址,大部分是172.17.0.1,也有可能是 192.168.1.5 这种,所以一定要灵活变通

可能原因2 CentOS 的防火墙的原因

不少网友也遇到了关闭防火墙后就能正常连接了,所以可以参考下面的关闭命令,尝试关闭一下 CentOS 防火墙,看看能否正常

CentOS上关闭防火墙
  1. 查看防火墙状态:使用以下命令检查当前防火墙状态:
  1. sudo firewall-cmd --state
  1. 停止防火墙服务:如果防火墙正在运行,可以使用以下命令停止防火墙服务:
  1. sudo systemctl stop firewalld
  1. 禁用防火墙服务:为了确保防火墙在系统重新启动后不会自动启动,可以使用以下命令禁用防火墙服务:
  1. sudo systemctl disable firewalld
  1. 验证防火墙状态:使用以下命令验证防火墙是否已关闭:
  1. sudo firewall-cmd --state

#记录

转载请注明作者和出处,并添加本页链接。
原文链接: //blog.zrlog.com/war-faq-collect.html

广告:使用 Cloudflare 的 CDN 加速你的应用