3

我的运行项目有一些问题,但这是最糟糕的:

    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 异常,这让我发疯了!

我在命令行项目中使用了相同的驱动程序,它运行良好。

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

在此先感谢,并为我的英语不好感到抱歉。

托马斯。

4

1 回答 1

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 构建的,它只包含那些通常在移动设备上使用的类。

于 2013-01-12T16:35:21.693 回答