因为实际所需,在原先系统基础上须要再配置一台服务器做为业务系统,系统环境是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安装后就有的。
其中的原理还不是很清楚,为何必需要有libXp.so.6文件,和系统显示有什么关系,若是哪位大虾知道请指教,谢谢!
Abstract
libXp.so.6是XFree86的一個library,一般在執行由Java寫的GUI時,會遇到以上的錯訊訊息。
Introduction
執行環境:CentOS 5.1 + JDK 1.4.2.17
由Java寫的GUI,如matlab、Oracle,在執行時可能出現如下錯誤訊息
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_17/jre/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
缘由是在/usr/lib下找不到libXp.so.6這個library。
Solution
Step 1:
[root@localhost /]# yum install libXp.so.6
執行結果
[root@localhost /]# yum install libXp.so.6
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for libXp to pack into transaction set.
libXp-1.0.0-8.1.el5.i386. 100% |=========================| 6.9 kB 00:00
---> Package libXp.i386 0:1.0.0-8.1.el5 set to be updated
--> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
libXp i386 1.0.0-8.1.el5 base 23 k
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 23 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): libXp-1.0.0-8.1.el 35% |======== | 8.0 kB (1/1): libXp-1.0.0-8.1.el 70% |================= | 16 kB (1/1): libXp-1.0.0-8.1.el 100% |=========================| 23 kB 00:03
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: libXp Installing: libXp ##################### Installing: libXp ##################### Installing: libXp ###################### Installing: libXp ###################### Installing: libXp ######################## Installing: libXp ######################## Installing: libXp ######################## Installing: libXp ######################### [1/1]
Installed: libXp.i386 0:1.0.0-8.1.el5
java
Complete!linux
网传还有一种方法就是直接修改配置文件的方式:我用的这种方法windows
在linux下从新安装了一个tomcat后,打开网页后,发现验证码显示不了,报Could not initialize class sun.awt.X11GraphicsEnvironment的异常,但在window下却又可显示的,不知为什么?上网一查,说没是加载java.awt.headless,因而修改${TOMCAT_HOME}/bin/catalina.sh (windows修改catalina.bat)
查到-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \这行,并在这一行下加入:tomcat
-Djava.awt.headless=true \
共有七处的。
修改好保存再重启便可,此时,若是是用远程登陆来修改的话,有可能须要修改catalina.sh这个文件的权限,用在tomcat\bin目录下输入chmod 777 catalina.sh修改便可!服务器
转自:http://blog.csdn.net/e421083458/article/details/8911124less