• 验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案


    验证码突然无法显示,并报如下错误。

    Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Class.java:195)
    	at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
    	at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
    	at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1182)
    	at cn.com.chinautrust.idm.component.ValidateCode.createCode(ValidateCode.java:114)
    	at cn.com.chinautrust.idm.component.ValidateCode.<init>(ValidateCode.java:99)
    	at cn.com.chinautrust.idm.component.ValidateCodeUtils.getImg(ValidateCodeUtils.java:71)
    	at cn.com.chinautrust.idm.controller.login.VerificationCode.getValidateImgCode(VerificationCode.java:33)
    	at sun.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
    	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
    	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
    	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    	... 43 more
    

    在catalina.sh里加上一句“-Djava.awt.headless=true ”,问题解决。
    经查,出现这种情况一般就是启动tomcat的用户无法访问Xserver,包括Xserver没有启动或者没有权限访问.

    修改${TOMCAT_HOME}/bin/catalina.sh或${TOMCAT_HOME}/bin/catalina.bat文件:

    在所有类似以下代码:
        "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS
          -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH"
          -Djava.security.manager
          -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy
          -Dcatalina.base="$CATALINA_BASE"
          -Dcatalina.home="$CATALINA_HOME"
          -Djava.io.tmpdir="$CATALINA_TMPDIR"

    在尾部加上一句:
          -Djava.awt.headless=true

    修改后内容如下:
        exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS
          -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH"
          -Dcatalina.base="$CATALINA_BASE"
          -Dcatalina.home="$CATALINA_HOME"
          -Djava.io.tmpdir="$CATALINA_TMPDIR"
          -Djava.awt.headless=true

    以tomcat6.0为例,总共有八处这样的地方,修改好后即可。

  • 相关阅读:
    [导入]一家公司招收.net高级程序员而出得一套卷子
    [导入].NET Remoting 实现分布式数据库查询
    [导入].NET面试题
    [导入]System.Web.Mail Send Mail
    Aspnet_regsql 碰到的问题解决
    subsnic实例!
    sql coalesce()函数、datalength()函数介绍及应用
    .NET2.0 验证控件常用的正则表达式 站长分享站
    C#日期函数所有样式大全
    SubSonic的sql插入
  • 原文地址:https://www.cnblogs.com/cuijinlong/p/13426102.html
Copyright © 2020-2023  润新知