【问题标题】:missing JDBC driver oracle 10g android 4.x缺少 JDBC 驱动程序 oracle 10g android 4.x
【发布时间】:2012-12-27 01:04:45
【问题描述】:

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

    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 异常,这让我抓狂!

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

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

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

托马斯。

【问题讨论】:

  • 您项目的libs 文件夹中有Oracle 驱动程序.jar 吗?
  • 请显示异常的logcat输出。
  • 感谢 logcat 的输出。请参阅我的更新答案。

标签: android oracle jdbc driver


【解决方案1】:

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

【讨论】:

  • 如果我没记错的话,ojdbc14.jar 可以工作,至少对于基本操作。我对 ojdbc5.jar 没有任何具体知识;你必须尝试一下。
  • 不幸的是它不起作用(ojdbc14 & ojdbc5)我不知道该怎么办:(
  • 请显示 logcat 输出。它包含诊断问题的基本信息。
  • @user1972624:链接不会指向显示 logcat 输出的页面。请将其添加到问题中。无论如何,当您首先提出问题时,您应该把它放在哪里。
  • 我添加了一个包含 javax.management.MBeanServer 的 jar 并且我仍然有相同的日志,所以我尝试了 Paul Statham 的解决方案,但效果并不好......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 2011-04-24
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多