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