我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle中怎么解决Exception in thread main问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle中怎么解决Exception in thread main问题

本篇内容介绍了“Oracle中怎么解决Exception in thread main问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

此文章是在AIX操作系统正确安装了CDE前提下进行进行说明的。

在安装了Oracle的服务器上运行dbca 命令,报错:

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

其实不止是执行dbca会报错,只要执行需要弹出图形窗口的命令都会有这样的问题。

大部分情况下我们会认为是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

验证一下包:

[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

再次执行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用户直接登录可以执行dbca顺利打开图形窗口。用root登录xshell然后执行xhost +,

再切换su - oracle 改变用户身份,结果执行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下,执行同样步骤却不能打开图形窗口。

查看trace.log文件发现DISPLAY变量设置的不正确,不能使用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)

      通过观察不难发现一个规律,也就是第一个打开的图形终端为IP:0,在里面执行dbca弹出的图形窗口为IP:0.0。

第二个打开的图形窗口占用的终端序号为IP:1,在其内部执行dbca命令弹出窗口则为IP:1.0。后面打开的终端以此类推序号。

      那么我们打开的Xshell其实也是一个终端,只不过平时占用的是字符终端,当我们执行dbca的时候会弹出图形窗口,

因此这个时候也会占用一个图形终端序号,经上述推理,也就很容易在Xshell终端设置正确的DISPLAY参数了,

也就是看一下我们要打开的是占用第几个图形终端,假定为n,那么我们设置

DISPLAY参数值就为“打开终端所在计算机的IP:n-1.0”。

      那么回过头来再想一下,为什么用oracle用户直接登录就不存在任何题呢,而用root用户登录再su到oracle用户身份就出

现这个报错呢。其实很简单,我们不论用哪个用户身份登录到一个终端的时候执行echo DISPLAY发现默认设置好了一个值就

是localhost:n.0,当我们切换用户身份以后再执行echo DISPLAY发现这个值不见了,此时就需要我们认为设定这个值了,指定

在哪个终端打开图形窗口。

      回想一下网上的帖子设置的DISPLAY参数都是IP:0.0,也就是在打开的第一个图形终端里设置的,或者是在没有打开图形

终端时在命令行终端里设置的情况。

“Oracle中怎么解决Exception in thread main问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle中怎么解决Exception in thread main问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么解决php中thread找不到的问题

本篇内容主要讲解“怎么解决php中thread找不到的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决php中thread找不到的问题”吧!php中thread找不到的解决办法:1、检
2023-06-25

Oracle异常问题怎么解决

解决Oracle异常问题的方法取决于异常的具体类型和原因。以下是一些常见的解决方法:1. 查看异常信息:首先,查看异常的详细信息,包括错误代码和错误消息。这些信息可以帮助您更好地了解问题的根本原因。2. 查找错误文档:使用错误代码或错误消息
2023-09-26

ORACLE的declare问题怎么解决

要解决ORACLE的DECLARE问题,可以尝试以下几种方法:1. 检查DECLARE语句的语法是否正确。确保DECLARE语句中的变量声明、数据类型、大小写等都正确无误。2. 确保DECLARE语句位于PL/SQL块中。DECLARE语句
2023-08-19

mybatis in foreach双层嵌套问题怎么解决

这篇文章主要介绍了mybatis in foreach双层嵌套问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatis in foreach双层嵌套问题怎么解决文章都会有所收获,下面我们一起来看
2023-07-05

oracle导入中文乱码问题怎么解决

oracle导入中文乱码问题解决方法:1、更改Oracle数据库的数据库参数NLS_LANG,更改该参数为中文字符集,如:simplified Chinese_China.ZHS16GBK,此参数设置会对数据库中的所有字符数据有效;2、可以
2023-07-10

delete in子查询不走索引问题怎么解决

本文小编为大家详细介绍“delete in子查询不走索引问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“delete in子查询不走索引问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。问题复
2023-07-02

Java中executeBatch()问题怎么解决

在 Java 中,executeBatch() 方法用于执行一批 SQL 语句。如果你遇到了 executeBatch() 方法无法正常工作的问题,可以尝试以下解决方法:1. 检查数据库驱动版本:确保你使用的数据库驱动版本与数据库兼容,并且
2023-09-14

Delphi中codegear问题怎么解决

要解决Delphi中CodeGear的问题,可以尝试以下方法:1. 更新CodeGear版本:确保您正在使用最新的CodeGear版本,以便获得最新的修复和功能。2. 检查文档和论坛:查找CodeGear的官方文档和论坛,以了解关于特定问题
2023-09-22

PHP中includefile问题怎么解决

在PHP中,使用include或require语句来包含其他的文件。如果在包含文件时出现问题,可以尝试以下解决方法:检查文件路径:确保包含文件的路径是正确的。可以使用绝对路径或相对路径来包含文件。检查文件权限:确保包含文件具有适当的读取权限
PHP中includefile问题怎么解决
2023-10-30

android中FLAG_ACTIVITY_NEW_TASK问题怎么解决

在Android中,FLAG_ACTIVITY_NEW_TASK标志用于启动一个新的任务栈。如果出现FLAG_ACTIVITY_NEW_TASK问题,可能是因为在启动一个Activity时没有正确设置该标志或者该标志被错误地设置了。以下是解
2023-08-19

编程热搜

目录