user1972624
user1972624

Reputation:

missing JDBC driver oracle 10g android 4.x

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);
    }

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;

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.

Thomas.

Upvotes: 3

Views: 1399

Answers (1)

Codo
Codo

Reputation: 78855

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.

Update:

The error message is pretty clear:

Could not find class 'javax.management.MBeanServer'

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.

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.

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.

Upvotes: 3

Related Questions