Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.

时间:2024-09-28 12:37:50

刚刚在一台Linux服务器上安装了jdk和Tomcat,然后部署了一个web项目,在项目中有个添加图片的功能,保存图片时报错

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.UnsatisfiedLinkError: /home/software/jdk1.7.0_65/jre/lib/i386/xawt/libmawt.so: libXext.so.6: cannot open shared object file: No such file or directory

网上说是jdk安装了32位的,应该安装64位的。然后我就将jdk删除重装了64位的。

如何查看jdk是多少位方法:

使用 java -version 即可。 
如果是安装了32位的jdk,则输出信息如下:

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) Server VM (build 25.144-b01, mixed mode)

上面的输出信息中没包含64bit。

如果是安装了64位的jdk,则输出信息如下:

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

jdk由32位改为64位后,启动项目,保存图片时又报错了,报错信息如下

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11.XToolkit

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.

百度了一下这个问题,基本上都说是如下原因:

原因是windows内核集成了gui,而linux上没有启动x server

解决办法:
1。启动x server

2。在java运行参数上加-Djava.awt.headless=true 

我修改了应用服务器的启动文件。tomcat中的/bin/catalina.sh文件,
在所有的        -Dcatalina.home="$CATALINA_HOME" /下面都加上了

-Djava.awt.headless=true /
然后问题就解决了。