丢失的JDBC驱动程序的Oracle 10g的Andr​​oid 4.x版驱动程序、Oracle、JDBC、oid

2023-09-07 12:54:12 作者:誓言是蛊惑人心的毒药

我有几个问题,我跑谟但是这一次是最差的:

I've got a few problems with my running projet but this one is the worst :

    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:

here's the log with 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的异常,它的驾驶我疯了!

And I always get the ClassNotFound exception and it's driving me crazy!

我用同样的驱动程序的命令行项目,它工作得很好。

I used the same Driver for a Command line project and it works well.

如果任何一个有任何线索,这将是巨大的......

If any one have any clue it would be great...

由于通过提前和对不起我的英语不好。

Thanks by advance and sorry for my bad English.

托马斯。

推荐答案

较新的Oracle驱动程序(至少 ojdbc6.jar ,也许前面的人也一样)不工作Android系统。它们需要几个类从Java标准版(Java SE)不可用的剥离下来的Andr​​oid平台上。

Newer Oracle drivers (at least ojdbc6.jar, maybe earlier ones as well) do not work on Android. They require several classes from the Java Standard Edition (Java SE) that are not available on the stripped down Android platform.

更新:

该错误信息是pretty的明确的:

The error message is pretty clear:

Could not find class 'javax.management.MBeanServer'

这是一个Java SE类缺少在Android上的。它可能想看看这个问题 Android的Oracle数据库JDBC6 。该用户能够使用的将ojdbc14.jar 的在Android上。

This is a Java SE class that's missing on Android. It might want to have a look at the question Android Oracle Database JDBC6. This user was able to use ojdbc14.jar on Android.

也许他/她所使用的Oracle客户端不同,例如: 的Class.forName(oracle.jdbc.OracleDriver); 而不是的Class.forName(oracle.jdbc.driver.OracleDriver); 。或者他/她使用的内​​部使用不同类不同的连接字符串。或者它即使被称为旧的驱动程序的将ojdbc14.jar 的为好。

Possibly he/she used the Oracle client differently, e.g. Class.forName("oracle.jdbc.OracleDriver"); instead of Class.forName("oracle.jdbc.driver.OracleDriver");. Or he/she used a different connection string that internally uses different classes. Or it's an older driver even though is called ojdbc14.jar as well.

无论如何也不能保证它永远不会工作。甲骨文的Java客户端构建的Java SE,而不是针对Android的Java,其中只包含那些在移动设备上正常使用这些类。

Anyhow there's no guarantee that it will ever work. Oracle Java client is build for Java SE and not for the Android Java, which only contains those classes that are normally used on a mobile device.