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
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

相關文章
相關標籤/搜索