设为首页 收藏本站
查看: 746|回复: 0

[经验分享] linux+tomcat+jdk环境下图片验证码无法显示

[复制链接]

尚未签到

发表于 2018-12-2 11:04:28 | 显示全部楼层 |阅读模式
  一、
  由于实际所需,在原先系统基础上需要再配置一台服务器作为业务系统,系统环境是linux+tomcat,根据原先的配置情况,将linux系统、tomcat、JDK等环境都安装配置完成,然后把应用程序部署到了tomcat中,但启动后却发现图片验证码无法显示。检查了所有配置和原服务器都是一样的,在catalina.sh中也设置 JAVA_OPTS='-Djava.awt.headless=true'。于是上网查了好多资料,发现和一个libXp.so.6文件有关,最后发现了问题所在。下面简单描述一下原因和解决方法。
  如果装了Xwindow,则在/usr/X11R6/lib下有libXp.so.6文件,是一个link文件,指向同目录的libXp.so.6.2文件,libXp.so.6.2文件具有可执行权限,我原有的系统安装了Xwindow所以能正常显示验证码。而新配系统没有装Xwindow缺少libXp.so.6文件,所以没法显示验证码。如果/usr/X11R6/lib下没有libXp.so.6文件,则可拷贝libXp.so.6.2到JDK目录$JAVA_HOME/jre/lib/i386下,建立软链接ln -s libXp.so.6.2 libXp.so.6,设置文件libXp.so.6.2的执行权限即可。这样重启tomcat就可以了,另外在$JAVA_HOME/jre/lib/i386下有一个libawt.so文件,也是必需的,是JDK安装后就有的。
  安装:yum install libXp.so.6
  cp -af /usr/lib/libXp.so.6.2.0 /usr/java/jdk1.6.0_31/jre/lib/
  cd /usr/java/jdk1.6.0_31/jre/lib/
  ln -s libXp.so.6.2.0 libXp.so.6
  转自:http://lu2002lulu.iteye.com/blog/413783
  二、使用以上方法图片还是经常无法打开,提示系统内部错误,日志如下:
  May 16, 2013 9:29:44 AM org.apache.catalina.core.StandardWrapperValve invoke
  SEVERE: Servlet.service() for servlet jsp threw exception

  java.lang.NoClassDefFoundError: Could not initialize>  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:169)
  at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
  at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1135)
  at java.awt.image.BufferedImage.getGraphics(BufferedImage.java:1125)
  at org.apache.jsp.image_jsp._jspService(image_jsp.java:82)
  at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
  at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
  at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
  at org.j2cms.web.filter.MyStrutsFilterDispatcher.doFilter(MyStrutsFilterDispatcher.java:27)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:180)
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  at java.lang.Thread.run(Thread.java:662)
  解决:http://tcrct.iteye.com/blog/507953
  修改${TOMCAT_HOME}/bin/catalina.sh (windows修改catalina.bat)
  查到-Djava.io.tmpdir="$CATALINA_TMPDIR"这行,并在这一行下加入:
  -Djava.awt.headless=true \
  共有七处
  执行:
  sed -i '/-Djava\.io\.tmpdir=/a\-Djava.awt.headless=true \\' /usr/local/tomcat/bin/catalina.sh
  重启tomcat


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642312-1-1.html 上篇帖子: Tomcat部署war包大小超出限制的大小 下篇帖子: servlet jsp tomcat jdk 对应版本关系 及 如何查看jsp和servlet版本信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表