缺少JDBC驱动程序oracle 10g android 4.x.

时间:2013-01-12 16:18:19

标签: android oracle jdbc driver

我的跑步项目遇到了一些问题,但这个问题最糟糕:

    String url="jdbc:oracle:login/pwd@host:1521:etudom";
    Connection co = null;

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        co= DriverManager.getConnection(url);
        popUp("Ok");
    }
    // Driver Oracle : Should never happen
    catch (ClassNotFoundException e){
        popUp("ERROR: Oracle Driver's missing");
        //System.exit(1);
    }
    // Internet Connection Problem
    catch (SQLException e) {
        popUp("ERREOR :   " + e.getMessage());
        //System.exit(1);
    }

这是OJDBC14的日志:

    01-12 22:37:14.876: D/dalvikvm(558): Not late-enabling CheckJNI (already on)
    01-12 22:37:16.867: D/gralloc_goldfish(558): Emulator without GPU emulation detected.
    01-12 22:38:01.996: E/dalvikvm(558): Could not find class 'javax.management.MBeanServer', referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
    01-12 22:38:02.006: W/dalvikvm(558): VFY: unable to resolve check-cast 706 (Ljavax/management/MBeanServer;) in Loracle/jdbc/driver/OracleDriver;
    01-12 22:38:02.006: D/dalvikvm(558): VFY: replacing opcode 0x1f at 0x002d
    01-12 22:38:02.006: I/dalvikvm(558): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
    01-12 22:38:02.006: W/dalvikvm(558): VFY: unable to resolve static method 3503: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
    01-12 22:38:02.016: D/dalvikvm(558): VFY: replacing opcode 0x71 at 0x0080
    01-12 22:38:02.016: I/dalvikvm(558): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
    01-12 22:38:02.027: W/dalvikvm(558): VFY: unable to resolve static method 3503: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
    01-12 22:38:02.027: D/dalvikvm(558): VFY: replacing opcode 0x71 at 0x0094
    01-12 22:38:02.036: I/dalvikvm(558): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
    01-12 22:38:02.036: W/dalvikvm(558): VFY: unable to resolve static method 3503: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
    01-12 22:38:02.036: D/dalvikvm(558): VFY: replacing opcode 0x71 at 0x00a8
    01-12 22:38:02.036: I/dalvikvm(558): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
    01-12 22:38:02.036: W/dalvikvm(558): VFY: unable to resolve static method 3503: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
    01-12 22:38:02.036: D/dalvikvm(558): VFY: replacing opcode 0x71 at 0x00bc
    01-12 22:38:02.046: I/dalvikvm(558): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
    01-12 22:38:02.046: W/dalvikvm(558): VFY: unable to resolve static method 3503: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
    01-12 22:38:02.046: D/dalvikvm(558): VFY: replacing opcode 0x71 at 0x00d1
    01-12 22:38:02.046: W/dalvikvm(558): VFY: unable to resolve exception class 702 (Ljavax/management/JMException;)
    01-12 22:38:02.046: W/dalvikvm(558): VFY: unable to resolve exception class 702 (Ljavax/management/JMException;)
    01-12 22:38:02.046: W/dalvikvm(558): VFY: unable to resolve exception class 702 (Ljavax/management/JMException;)
    01-12 22:38:02.046: W/dalvikvm(558): VFY: unable to find exception handler at addr 0xfa
    01-12 22:38:02.046: W/dalvikvm(558): VFY:  rejected Loracle/jdbc/driver/OracleDriver;.registerMBeans ()V
    01-12 22:38:02.046: W/dalvikvm(558): VFY:  rejecting opcode 0x0d at 0x00fa
    01-12 22:38:02.046: W/dalvikvm(558): VFY:  rejected Loracle/jdbc/driver/OracleDriver;.registerMBeans ()V
    01-12 22:38:02.056: W/dalvikvm(558): Verifier rejected class Loracle/jdbc/driver/OracleDriver;

我总是得到ClassNotFound异常并且它让我疯狂!

我在命令行项目中使用了相同的驱动程序,效果很好。

如果有任何人有任何线索,那就太棒了......

先谢谢你,感谢我的英语不好。

托马斯。

1 个答案:

答案 0 :(得分:3)

较新的Oracle驱动程序(至少ojdbc6.jar,也许是早期版本的驱动程序)在Android上无效。它们需要Java标准版(Java SE)中的几个类,这些类在精简的Android平台上不可用。

<强>更新

错误信息非常清楚:

Could not find class 'javax.management.MBeanServer'

这是Android上缺少的Java SE类。它可能想要查看问题Android Oracle Database JDBC6。该用户可以在Android上使用 ojdbc14.jar

可能他/她使用不同的Oracle客户端,例如Class.forName("oracle.jdbc.OracleDriver");代替Class.forName("oracle.jdbc.driver.OracleDriver");。或者他/她使用了一个内部使用不同类的不同连接字符串。或者它是一个较旧的驱动程序,即使它也被称为 ojdbc14.jar

无论如何,无法保证它能够正常工作。 Oracle Java客户端是针对Java SE构建的,而不是针对Android Java构建的,Android Java仅包含通常在移动设备上使用的那些类。