【问题标题】:java.lang.ClassNotFoundException: oracle.jdbc.internal.XMLTypeIntf exception displayed when i execute the code?java.lang.ClassNotFoundException:执行代码时显示 oracle.jdbc.internal.XMLTypeIntf 异常?
【发布时间】:2017-01-05 15:00:57
【问题描述】:

我试图从数据库中获取xml值并显示在文本框中,但是当我执行代码时,当我执行代码时出现以下异常,

类似地,我尝试从数据库中获取字符串值(文本)并在文本框中显示其工作正常。XMLType 和异常的问题。

我正在使用 eclipse 应用程序执行代码并包含 jars xdb6,ojdbc14,xmlparserv2

线程“AWT-EventQueue-0”java.lang.NoClassDefFoundError 中的异常: oracle/jdbc/internal/XMLTypeIntf 在 java.lang.ClassLoader.defineClass1(本机方法)在 java.lang.ClassLoader.defineClass(未知来源)在 java.security.SecureClassLoader.defineClass(未知来源)在 java.net.URLClassLoader.defineClass(未知来源)在 java.net.URLClassLoader.access$100(未知来源)在 java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(未知来源)在 java.lang.ClassLoader.loadClass(Unknown Source) 在 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) 在 oracle.xdb.XMLTypeFactory.create(XMLTypeFactory.java:74) 在 oracle.sql.OPAQUE.toClass(OPAQUE.java:376) 在 oracle.sql.OPAQUE.toJdbc(OPAQUE.java:318) 在 oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:144) 在 oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:100) 在 oracle.jdbc.driver.OracleResultSetImpl.getObject(OracleResultSetImpl.java:915) 在 Searchdb.actionPerformed(Searchdb.java:327) 在 javax.swing.AbstractButton.fireActionPerformed(未知来源)在 javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(未知来源)在 javax.swing.DefaultButtonModel.setPressed(未知来源)在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知 源)在 java.awt.Component.processMouseEvent(未知源)在 javax.swing.JComponent.processMouseEvent(未知来源)在 java.awt.Component.processEvent(未知来源)在 java.awt.Container.processEvent(未知来源)在 java.awt.Component.dispatchEventImpl(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源)在 java.awt.LightweightDispatcher.processMouseEvent(未知来源)在 java.awt.LightweightDispatcher.dispatchEvent(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Window.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.EventQueue.dispatchEventImpl(未知来源)在 java.awt.EventQueue.access$200(未知来源)在 java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue$4.run(未知源)在 java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue.dispatchEvent(未知源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知 来源)在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(Unknown Source) 在 java.awt.EventDispatchThread.run(Unknown Source) 原因: java.lang.ClassNotFoundException: oracle.jdbc.internal.XMLTypeIntf at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(未知来源)在 java.lang.ClassLoader.loadClass(Unknown Source) 在 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 55 更多

String strxa = tfx1.getText(); //here i will get the student id from user.

    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@//host:1521/service","username","pwd");
    Statement st =con.createStatement();
    String str3 ="select student_xml  from student where student_id='"+strxa+"'";

    System.out.println(str3);

    ResultSet rs = st.executeQuery(str3);
    System.out.println(str3);

   if (rs.next()) {

            XMLType poxml = (XMLType)rs.getObject(1);
            System.out.println(poxml); //when i try to print this no output in console
            String poString =poxml.getStringVal();
            System.out.println(poString); when i try to print this no output in console


            //Sets Records in TextFields.
            area.setText(poString);


        }

我的 jar 或代码有什么问题吗?当我尝试在 while 循环中打印值时,它没有在控制台中打印。

【问题讨论】:

    标签: java database eclipse jdbc jar


    【解决方案1】:

    此错误告诉我您使用的 xdb 和 ojdbc JAR 版本不兼容。

    根据您的堆栈跟踪,oracle.xdb.XMLTypeFactory 类(在 xdb JAR 中)依赖于oracle.jdbc.internal.XMLTypeIntf 类。后者可以在 12c 版本的 JDBC 驱动程序 JAR 中找到,可以从 this page 下载,但不能在更早的 JDBC 驱动程序版本中找到。

    要么将 ojdbc 升级到更高版本,要么将 xdb 降级到旧版本。

    【讨论】:

    • 我已经将带有 xdb6 的 xdb 版本减少到 xdb,然后使用带有 xmlparserv2 jar 的 ojdbc6 jar。感谢@Luke Woodward
    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多