java.lang.ClassNotFoundException:执行代码时显示的oracle.jdbc.internal.XMLTypeIntf异常?

时间:2017-01-05 15:00:58

标签: java database eclipse jdbc jar

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

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

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

  

线程“AWT-EventQueue-0”中的异常java.lang.NoClassDefFoundError:   oracle / jdbc / internal / XMLTypeIntf at   java.lang.ClassLoader.defineClass1(Native Method)at   java.lang.ClassLoader.defineClass(未知来源)at   java.security.SecureClassLoader.defineClass(未知来源)at   java.net.URLClassLoader.defineClass(未知来源)at   java.net.URLClassLoader.access $ 100(未知来源)at   java.net.URLClassLoader $ 1.run(未知来源)at   java.net.URLClassLoader $ 1.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.net.URLClassLoader.findClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   oracle.xdb.XMLTypeFactory.create(XMLTypeFactory.java:74)at   oracle.sql.OPAQUE.toClass(OPAQUE.java:376)at   oracle.sql.OPAQUE.toJdbc(OPAQUE.java:318)at   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)at   javax.swing.AbstractButton.fireActionPerformed(未知来源)at   javax.swing.AbstractButton $ Handler.actionPerformed(Unknown Source)at   javax.swing.DefaultButtonModel.fireActionPerformed(未知来源)at   javax.swing.DefaultButtonModel.setPressed(未知来源)at   javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知   来自)java.awt.Component.processMouseEvent(未知来源)at   javax.swing.JComponent.processMouseEvent(未知来源)at   java.awt.Component.processEvent(未知来源)at   java.awt.Container.processEvent(未知来源)at   java.awt.Component.dispatchEventImpl(未知来源)at   java.awt.Container.dispatchEventImpl(未知来源)at   java.awt.Component.dispatchEvent(未知来源)at   java.awt.LightweightDispatcher.retargetMouseEvent(未知来源)at   java.awt.LightweightDispatcher.processMouseEvent(未知来源)at   java.awt.LightweightDispatcher.dispatchEvent(未知来源)at   java.awt.Container.dispatchEventImpl(未知来源)at   java.awt.Window.dispatchEventImpl(未知来源)at   java.awt.Component.dispatchEvent(未知来源)at   java.awt.EventQueue.dispatchEventImpl(未知来源)at   java.awt.EventQueue.access $ 200(未知来源)at   java.awt.EventQueue $ 3.run(未知来源)at   java.awt.EventQueue $ 3.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知   来源)at   java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知   来自)java.awt.EventQueue $ 4.run(未知来源)at   java.awt.EventQueue $ 4.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知   来自)java.awt.EventQueue.dispatchEvent(未知来源)at   java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源)     at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)     在java.awt.EventDispatchThread.pumpEventsForHierarchy(未知   来自java.awt.EventDispatchThread.pumpEvents(未知来源)     at java.awt.EventDispatchThread.pumpEvents(Unknown Source)at   java.awt.EventDispatchThread.run(未知来源)引起:   java.lang.ClassNotFoundException:oracle.jdbc.internal.XMLTypeIntf at   java.net.URLClassLoader $ 1.run(未知来源)at   java.net.URLClassLoader $ 1.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.net.URLClassLoader.findClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)... 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);


        }

我的罐子或代码有什么问题。当我试图在while循环中打印它时,它不会在控制台中打印出来。

1 个答案:

答案 0 :(得分:3)

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

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

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