linux+tomcat無法顯示圖片驗證碼

由於實際所需,在原先系統基礎上需要再配置一臺服務器作爲業務系統,系統環境是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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章