本篇內(nèi)容介紹了“Oracle中怎么解決Exception in thread main問題”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、寶安網(wǎng)站維護(hù)、網(wǎng)站推廣。此文章是在AIX操作系統(tǒng)正確安裝了CDE前提下進(jìn)行進(jìn)行說明的。
在安裝了Oracle的服務(wù)器上運(yùn)行dbca 命令,報(bào)錯:
[oracle@stone_db ~]$ dbca
Exception in thread "main"
[oracle@stone_db ~]$
[oracle@stone_db ~]$ export DISPLAY=1921.68.1.210:0.0
[oracle@stone_db ~]$ dbca
Exception in thread "main"
其實(shí)不止是執(zhí)行dbca會報(bào)錯,只要執(zhí)行需要彈出圖形窗口的命令都會有這樣的問題。
大部分情況下我們會認(rèn)為是DISPLAY變量的問題,但是也不盡然,我們查看一下dbca的log 日志:
[oracle@stone_db scripts]$ cd $ORACLE_HOME/cfgtoollogs/dbca
[oracle@stone_db dbca]$ ls
trace.log
[oracle@stone_db dbca]$ cat trace.log
java.lang.UnsatisfiedLinkError:/home/Oracle_app_10204/jdk/jre/lib/i386/libawt.so:
libXp.so.6: cannot openshared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1503)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38)
atsun.awt.DebugHelper.<clinit>(DebugHelper.java:29)
at java.awt.Component.<clinit>(Component.java:506)
at oracle.sysman.assistants.util.wizard.WizardObject.<init>(WizardObject.java:64)
at oracle.sysman.assistants.dbca.ui.DBCAWizard.<init>(DBCAWizard.java:425)
at oracle.sysman.assistants.dbca.ui.UIHost.<init>(UIHost.java:214)
at oracle.sysman.assistants.dbca.ui.InteractiveHost.<init>(InteractiveHost.java:54)
at oracle.sysman.assistants.dbca.Dbca.getHost(Dbca.java:160)
at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:94)
at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:180)
原因很明顯缺包:
libXp.so.6: cannot open shared object file:No such file or directory
驗(yàn)證一下包:
[oracle@stone_db dbca]$ rpm -qa|grep libXp
libXpm-devel-3.5.5-3
libXpm-3.5.5-3
安裝libXp :
[root@stone_db Server]# ll
-rwxrwSrwx 1 root root 22996 2007-07-26libXp-1.0.0-8.1.el5.i386.rpm
-rwxrwSrwx 1 root root 15262 2007-07-26libXp-devel-1.0.0-8.1.el5.i386.rpm
[root@stone_db Server]# rpm -ivh libXp*.rpm
warning: libXp-1.0.0-8.1.el5.i386.rpm:Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:libXp ########################################### [ 50%]
2:libXp-devel ########################################### [100%]
[root@stone_db Server]# rpm -qa|grep libXp
libXpm-devel-3.5.5-3
libXp-1.0.0-8.1.el5
libXpm-3.5.5-3
libXp-devel-1.0.0-8.1.el5
再次執(zhí)行dbca成功:
[root@stone_db ~]# xhost +
access control disabled, clients canconnect from any host
[root@stone_db ~]# su - oracle
[oracle@stone_db ~]$ export DISPLAY=192.168.1.210:0.0
[oracle@stone_db ~]$ dbca
另外一種情況就是不缺包,用oracle用戶直接登錄可以執(zhí)行dbca順利打開圖形窗口。用root登錄xshell然后執(zhí)行xhost +,
再切換su - oracle 改變用戶身份,結(jié)果執(zhí)行dbca不能打開圖形窗口。
用root登錄CDE,
bash-3.2# xhost +
access control disabled, clients can connect from any host
bash-3.2# su - oracle
[oracle@aix275 ~]# dbca
DISPLAY not set.
Set DISPLAY environment variable, then re-run.
[oracle@aix275 ~]# who
root tty0 Jul 08 06:32
root pts/0 Jul 08 05:49 (192.168.1.210)
oracle pts/1 Jul 08 05:56 (192.168.1.210)
root pts/2 Jul 08 05:58 (192.168.1.210)
root dtremote Jul 08 06:34 (192.168.1.210:0)
root pts/3 Jul 08 06:34 (192.168.1.210:0.0)
root pts/4 Jul 08 00:53 (192.168.1.210)
[oracle@aix275 ~]# export DISPLAY=192.168.1.210:0.0
[oracle@aix275 ~]# dbca
正常打開圖形窗口。
但是在xshell下,執(zhí)行同樣步驟卻不能打開圖形窗口。
查看trace.log文件發(fā)現(xiàn)DISPLAY變量設(shè)置的不正確,不能使用192.168.1.210:0.0
[oracle@aix ~]# cat /database/product/10.2.0/db_1/cfgtoollogs/dbca/trace.log
java.lang.InternalError: Can't connect to X11 window server using '192.168.1.210:0.0' as the
value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:175)
at java.lang.Class.forName1(Native Method)
at java.lang.Class.forName(Class.java:180)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment
(GraphicsEnvironment.java:91)
at java.awt.Font.initializeFont(Font.java:333)
at java.awt.Font.<init>(Font.java:368)
at oracle.ewt.lwAWT.LWComponent.<clinit>(Unknown Source)
at oracle.sysman.assistants.util.wizard.WizardObject.<init>(WizardObject.java:64)
at oracle.sysman.assistants.dbca.ui.DBCAWizard.<init>(DBCAWizard.java:425)
at oracle.sysman.assistants.dbca.ui.UIHost.<init>(UIHost.java:214)
at oracle.sysman.assistants.dbca.ui.InteractiveHost.<init>(InteractiveHost.java:54)
at oracle.sysman.assistants.dbca.Dbca.getHost(Dbca.java:160)
at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:94)
at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:180)
后來打開多個圖形終端,然后用who命令查看。
[root@aix /]# who
root tty0 Jul 08 06:32
root pts/0 Jul 08 05:49 (192.168.1.210)
oracle pts/1 Jul 08 05:56 (192.168.1.210)
root pts/2 Jul 08 05:58 (192.168.1.210)
root dtremote Jul 08 06:34 (192.168.1.210:0)
root pts/3 Jul 08 06:34 (192.168.1.210:0.0)
root dtremote Jul 08 00:53 (192.168.1.210:1)
oracle dtremote Jul 08 06:44 (192.168.1.210:2)
oracle dtremote Jul 08 06:51 (192.168.1.210:3)
通過觀察不難發(fā)現(xiàn)一個規(guī)律,也就是第一個打開的圖形終端為IP:0,在里面執(zhí)行dbca彈出的圖形窗口為IP:0.0。
第二個打開的圖形窗口占用的終端序號為IP:1,在其內(nèi)部執(zhí)行dbca命令彈出窗口則為IP:1.0。后面打開的終端以此類推序號。
那么我們打開的Xshell其實(shí)也是一個終端,只不過平時占用的是字符終端,當(dāng)我們執(zhí)行dbca的時候會彈出圖形窗口,
因此這個時候也會占用一個圖形終端序號,經(jīng)上述推理,也就很容易在Xshell終端設(shè)置正確的DISPLAY參數(shù)了,
也就是看一下我們要打開的是占用第幾個圖形終端,假定為n,那么我們設(shè)置
DISPLAY參數(shù)值就為“打開終端所在計(jì)算機(jī)的IP:n-1.0”。
那么回過頭來再想一下,為什么用oracle用戶直接登錄就不存在任何題呢,而用root用戶登錄再su到oracle用戶身份就出
現(xiàn)這個報(bào)錯呢。其實(shí)很簡單,我們不論用哪個用戶身份登錄到一個終端的時候執(zhí)行echo DISPLAY發(fā)現(xiàn)默認(rèn)設(shè)置好了一個值就
是localhost:n.0,當(dāng)我們切換用戶身份以后再執(zhí)行echo DISPLAY發(fā)現(xiàn)這個值不見了,此時就需要我們認(rèn)為設(shè)定這個值了,指定
在哪個終端打開圖形窗口。
回想一下網(wǎng)上的帖子設(shè)置的DISPLAY參數(shù)都是IP:0.0,也就是在打開的第一個圖形終端里設(shè)置的,或者是在沒有打開圖形
終端時在命令行終端里設(shè)置的情況。
“Oracle中怎么解決Exception in thread main問題”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)頁標(biāo)題:Oracle中怎么解決Exceptioninthreadmain問題-創(chuàng)新互聯(lián)
當(dāng)前URL:http://jinyejixie.com/article18/ddegdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、全網(wǎng)營銷推廣、企業(yè)網(wǎng)站制作、網(wǎng)站策劃、自適應(yīng)網(wǎng)站、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容