您的位置:首页 > 运维架构 > Tomcat

linux+tomcat无法显示图片验证码

2013-05-10 15:24 253 查看

linux+tomcat无法显示图片验证码

分类:
tomcat
Linux 2013-05-10 15:24
1651人阅读 评论(0)收藏
举报
由于实际所需,在原先系统基础上需要再配置一台服务器作为业务系统,系统环境是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
Complete!

网传还有一种方法就是直接修改配置文件的方式:

在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"这行,并在这一行下加入:

-Djava.awt.headless=true \

共有七处的。
修改好保存再重启即可,此时,如果是用远程登录来修改的话,有可能需要修改catalina.sh这个文件的权限,用在tomcat\bin目录下输入chmod 777 catalina.sh修改即可!

文章来源 : http://blog.csdn.net/e421083458/article/details/8911124 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux tomcat 验证码