`

docker 部署 java web项目到tomcat之后无法显示验证码问题及解决过程

阅读更多
1、公司新的支付项目采用zookeeper+dubbo微服务架构

2、开发环境和测试环境、模测环境、生产环境采用docker部署

3、今天在和我们的运维一块搭建和调试jenkins+svn+docker+harbor时,遇到我们部署的java web项目的登录验证不能显示问题。

    1)通过在验证码类中记录比较详细的日志,最后排查出是awt库中的java.awt.Graphics2D类,在调用起实例的drawString方法时报了httpstaus 500错误

    2)通过

   https://blog.csdn.net/qq_36836224/article/details/80250220

提供的测试类,在docker中编译此类,得到更精准的异常信息

   bash-4.4# java Graphics2DTest
bash-4.4# java Graphics2DTest         
Exception in thread "main" java.lang.UnsatisfiedLinkError: /jdk/jre/lib/amd64/libfontmanager.so: libgcc_s.so.1: cannot open shared object file: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
        at sun.font.SunFontManager$1.run(SunFontManager.java:339)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.SunFontManager.<clinit>(SunFontManager.java:335)
        at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:264)
        at sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:863)
        at Graphics2DTest.main(Graphics2DTest.java:32)


   3)、通过上述错误找到https://blog.soilove.cn/archives/1592.html资料
      跟运维沟通安装libgcc_s.so.1
   4)、安装之后运维反馈继续报错,然后我登录进去docker,执行java Graphics2DTest发现确实依然报,再通过find命令去查 find / -name  libgcc_s.so.1
      发现/usr/lib/libgcc_s.so.1  不在/jdk/jre/lib/amd64/目录下,故此我把libgcc_s.so.1拷贝到/jdk/jre/lib/amd64/目录
   5)、然后继续执行java Graphics2DTest进行测试,发现了新的报错信息
   
bash-4.4# java Graphics2DTest
Exception in thread "main" java.lang.UnsatisfiedLinkError: /jdk/jre/lib/amd64/libfontmanager.so: libc.musl-x86_64.so.1: cannot open shared object file: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
        at sun.font.SunFontManager$1.run(SunFontManager.java:339)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.SunFontManager.<clinit>(SunFontManager.java:335)
        at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:264)
        at sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:863)
        at Graphics2DTest.main(Graphics2DTest.java:32)

     
    6)、再把libc.musl-x86_64.so.1拷贝到/jdk/jre/lib/amd64/目录,再执行测试通过
    7)、再验证web验证码服务,发现恢复正常
分享到:
评论

相关推荐

    linux环境下验证码不显示问题

    在Linux环境中部署Web应用时,可能会遇到登录页面中的验证码无法正常显示的问题。这一现象不仅降低了用户体验,还可能导致用户无法正常登录系统,严重影响了系统的可用性。本文将深入探讨这一问题的原因,并提供具体...

    网上书店java项目

    12. **容器与部署**:Tomcat、Jetty等应用服务器可能用于运行和部署项目,同时Docker容器化技术也可能被用来简化部署流程,确保环境一致性。 这个网上书店Java项目为学习者提供了实战练习的机会,涵盖了Web开发的多...

    在线考试项目(java)

    在线考试项目是一个基于Java技术构建的应用程序,它旨在提供一个平台,使得教育机构或个人能够进行线上测试和评估。这个项目的核心目标是实现便捷、高效和安全的远程考试功能,以便于教学管理和学习过程的数字化。 ...

    springboot+vue实现招聘平台(系统),邮箱验证码注册验证.zip

    本项目"springboot+vue实现招聘平台(系统)"结合了SpringBoot的后端能力与Vue.js的前端优势,实现了邮箱验证码注册验证的功能,为学习者提供了一个完整的软件开发实例,涵盖了从需求分析、系统设计、编码实现到测试...

    275!_Java在线投票系统_网上投票.rar

    7. **部署与运行**:系统可能在Tomcat、Jetty等Servlet容器中运行,或通过Docker等容器化技术进行部署,实现环境隔离和快速扩展。 8. **测试与调试**:单元测试(JUnit)、集成测试(TestNG)和性能测试(Apache ...

    javaWEB当当网

    在本项目"javaWEB当当网"中,我们聚焦于...总的来说,"javaWEB当当网"项目涵盖了完整的电商网站开发流程,从用户交互到后端逻辑,再到数据管理,涉及到的技术广泛且深入,对于学习和实践Java Web开发具有很高的价值。

    旅游管理系统

    通过这个系统,我们可以深入理解Java框架在实际项目中的应用,以及如何利用这些技术解决实际问题。 首先,Java框架的选择通常基于其稳定性和灵活性。在这个项目中,可能是Spring框架被用作核心的依赖注入...

    javaWeb购物商城源码

    3. **Tomcat**:Tomcat是一个流行的Java Servlet容器,用于部署和运行Java Web应用程序。在购物商城项目中,它负责解析HTTP请求,并将响应返回给客户端。 二、核心模块 1. **用户模块**:包括用户注册、登录、个人...

    基于springboot网上花店微信小程序源码数据库文档.zip

    最后,将项目部署到服务器,例如使用Docker进行容器化部署,以实现快速、灵活的环境部署。 通过这个项目,开发者不仅能掌握SpringBoot和微信小程序的开发技能,还能了解数据库设计、SSM框架整合以及支付接口的使用...

    【MaxKey单点登录认证系统 v2.4.0 RC】企业级IAM身份管理和身份认证产品+RBAC权限管理.zip

    7、基于Java平台开发,采用Spring、MySQL、Tomcat、Apache Kafka、Redis等开源技术,支持微服务,扩展性强。 8、许可证 Apache License, Version 2.0,开源免费。 源码更新日志: MaxKey单点登录认证系统 更新v...

    spring boot用户管理系统

    部署方面,Spring Boot的jar包可直接运行,也可以通过Docker容器化部署,实现灵活的环境部署。 综上所述,Spring Boot用户管理系统利用了Spring Boot的自动化配置和便捷性,结合Java Web的JSP技术,构建了一个功能...

    springboot298计算机学院校友网.zip

    1.2 内嵌式容器:项目无需额外配置Web服务器,SpringBoot自带内嵌的Tomcat或Jetty服务器,简化了部署流程。 1.3 精简依赖:Maven或Gradle的"starters"模块,使得添加新功能只需简单声明依赖,避免了版本冲突问题。 ...

    毕业设计论文-IT计算机-[新闻文章]自动新闻采集系统_webapps-源码.zip

    2. **Webapps目录结构**:在Java Web应用中,`webapps`目录是Tomcat等Web服务器的标准部署目录,包含Web应用的所有资源,如HTML、CSS、JavaScript文件、JSP页面、WEB-INF目录(其中放置web.xml配置文件)以及WEB应用...

    基于ssm+vue智能交互式在线网上花店.zip

    9. **部署与运行**:项目完成后,可能通过Docker容器化部署到服务器,如Tomcat或Nginx,前端资源通过Webpack打包后与后端服务进行整合。用户可以通过浏览器或微信小程序访问在线花店,享受流畅的购花体验。 10. **...

    该文件是一种基于JavaWeb的航空订票系统

    在JavaWeb开发中,首先会使用IDE(集成开发环境)如Eclipse或IntelliJ IDEA进行项目创建,选择Web项目类型,然后配置相关的服务器,如Tomcat或Jetty,这些服务器用于运行和部署Web应用。 系统的核心部分通常包括...

    高校社交系统项目助手.zip

    在SpringBoot的背景下,该项目可能利用了Spring Boot的自动配置、内嵌Web服务器(如Tomcat)以及对Spring框架的简化集成,以快速搭建起后端服务。Spring Data JPA可能会被用来方便地操作数据库,如MySQL或PostgreSQL...

    基于springboot等框架的民宿系统

    【标题】基于SpringBoot等框架的民宿系统是一个利用现代Java技术栈开发的Web应用程序,旨在为用户提供便捷的民宿预订服务。这个系统可能结合了Spring Boot、Spring MVC、MyBatis等流行框架,以提高开发效率并实现...

    WoNiuAtm.rar

    8. **部署与运行**:Java应用可能被打包为WAR或JAR文件,然后部署在Tomcat、Jetty等应用服务器上,或者使用Docker容器化技术进行部署。 9. **安全性**:考虑到用户认证,代码可能还需考虑防止SQL注入、XSS攻击等...

    springboot农机电招平台--论文.rar

    通过实际操作,可以深入理解SpringBoot的自动配置机制、MVC模式、数据库操作等核心概念,同时还能了解到项目开发的完整流程,包括需求分析、设计、编码、测试和部署等环节。 总之,"springboot农机电招平台"项目是...

    SpringBoot单体项目通用脚手架

    SpringBoot单体项目通用脚手架是基于Spring Boot框架构建的一种高效、便捷的开发工具,旨在简化Spring应用的初始搭建以及开发过程。Spring Boot的核心理念是“约定优于配置”,它通过自动化配置,使得开发者能够快速...

Global site tag (gtag.js) - Google Analytics