`

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

 
阅读更多

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

Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment

Caused by: java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.

 

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

 

以下为转贴:

1.什么是Headless mode? 
Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。

 

2.何时使用和headless mode?
Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。

 

3.如何使用和Headless mode?
一般是在程序开始激活headless模式,告诉程序,现在你要工作在Headless mode下,就不要指望硬件帮忙了,你得自力更生,依靠系统的计算能力模拟出这些特性来:
System.setProperty("java.awt.headless","true");

 

修改${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为例,总共有七处这样的地方,修改好后即可。

分享到:
评论

相关推荐

    Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

    标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...

    derby.jar 。。

    java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40 导致的原因: 在azkaban的server和executor中缺少一个叫derby.jar的包

    jacob_1.14.3.rar

    内涵jacob_1.14.3-x64.dll;jacob_1.14.3-64.jdk(maven地址);解决方法:Could not initialize class com.jacob.com.ComThread

    linux上实现视频截图

    public class VideoScreenshot { public static void main(String[] args) { String videoFilePath = "/path/to/your/video"; String screenshotPath = "/path/to/screenshot.png"; // 打开视频文件 avformat....

    解决hbase client在windows环境下报NoClassDefFound问题

    解决hbase client在windows环境下报Could not initialize class org.fusesource.jansi.internal.Kernel32的问题,把jar包放入hbase client的lib包下,重新运行hbase.cmd shell即可

    java串口所需依赖dll文件合集

    监听COM口启动程序报错 Could not initialize class gnu.io.RXTXCommDriver异常 是因为需要在%JAVA_HOME%/jre/bin目录中添加rxtxParallel.dll、rxtxSerial.dll文件

    Plsql 12连接Oracle时出现Could not initialize oci.dll解决方案 oracle 客户端

    在使用PL/SQL Developer 12连接Oracle数据库时,可能会遇到“Could not initialize oci.dll”这样的错误提示。这个错误通常表明系统无法找到或正确加载Oracle客户端的oci.dll库文件,这是Oracle Instant Client的一...

    不同环境下的资源文件目录编译

    在IT行业中,资源文件目录编译是一个至关重要的环节,特别是在多环境部署的场景下。这篇博文的标题“不同环境下的资源文件目录编译”显然关注的是如何根据开发、测试、生产等不同环境来管理和编译资源文件。...

    derby_ui_plugin_1.1.1

    Derby UI Plugin 1.1.1 是一个专门为Java开发者设计的用户界面插件,它在Java学习过程中能提供极大的便利。这个插件版本号为1.1.1,暗示了它可能包含了一些修复和改进,以提升用户体验和兼容性。...

    excel导出在docker环境中总是失败的问题

    excel导出在docker环境中总是失败 ,最直接的原因还是因为没有安装中文字体,解决方法如下: DOCKER环境中没有安装中文字体,需要安装 java.lang.NullPointerException: null 2020/5/29 上午8:40:11 at sun.awt....

    ezmorph-1.0.6.jar

    缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig 使用json时候将会用到的一个jar包,发现这个包在网上提供的比较少.缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig ...

    jacob-1.18.rar

    《Java与Office交互:Jacob-1.18详解》 在Java编程中,与Microsoft Office进行交互是一项常见的任务,例如读取、写入或编辑Word...在实际项目中,结合其他如Apache POI等纯Java库,可以根据需求选择最合适的解决方案。

    json-lib-2.1 2.2 2.3 2.4-jdk15

    JSONArray.fromObject(map)报错:Could not initialize class net.sf.json.JsonConfig。ireport 需要高于2.1版本的包。于是就找了这些包。最后2.2.2适合

    sun.jdbc.odbc.JdbcOdbcDriver下载

    jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver, 原因:从jdk从1.8开始,删除了jdbc-odbc桥,所以odbc的驱动是用不了的 解决方法:这里为提供一个解决JDK1.8不...

    jasperreport maven打包后找不到字体解决方案

    jasperreport 用maven打包后找不到字体解决方案 net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font

    使用JACOB工具调用COM组件

    要使用JACOB,首先你需要下载并安装它。...安装过程相对简单,主要包括两个步骤:将`jacob.dll`复制到Windows系统的`system32`目录下,确保系统能够找到这个动态链接库;然后将`jacob.jar`添加到Java的类路径...

    gnu.io.rar_android_gnu.io _librxtxSerial_librxtxSerial._librxtxS

    `librxtxSerial.so`是一个动态链接库,它是RXTX库在Android系统上的本地实现,因为Java层无法直接访问硬件,所以需要通过JNI(Java Native Interface)来调用这个C或C++编写的库,实现对硬件串口的访问。将此源码...

    LoadRunner11回放脚本出现“Vuser failed to initialize extension LrXml.dll”提示的解决方法

    ### LoadRunner11回放脚本出现“Vuser failed to initialize extension LrXml.dll”提示的解决方法 #### 问题背景 在使用LoadRunner11进行性能测试的过程中,尤其是在Windows XP系统环境下,用户可能会遇到一个...

    微信订阅号加了一些不完整的网页开发进去了

    微信订阅号加了一些不完整的网页开发进去了

    UnlimitedJCEPolicyJDK8.rar

    java安装路径Java\jre\lib\security下替换这两个架包,即可解决 java.security.cert.CertificateException: Unable to initialize, java.io.IOException: Short read of DER length

Global site tag (gtag.js) - Google Analytics