Android的Oracle数据库JDBC6 [英] Android Oracle Database JDBC6

查看:287
本文介绍了Android的Oracle数据库JDBC6的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建我的Oracle数据库的连接。 我previously使用ojdbc14.jar的,一切工作正常,但连接应该是安全的,我想对文件进行加密。所以我决定使用ojdbc5.jar的现在。 罐子是即时通讯我的库文件夹

原因从jdbc14更改为jdbc6我想用属性我的数据库,我的设备之间的安全数据交换

前面我也试过jdbc5,但有了这个,我只得到了一个Java堆大小错误。

 公共类MainActivity扩展活动
{

    @覆盖
    保护无效的onCreate(包savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        jdbccoonect连接=新jdbccoonect();
        connect.execute();


    }

    @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单)
    {
        //充气菜单;这增加了项目操作栏,如果它是present。
        。getMenuInflater()膨胀(R.menu.activity_main,菜单);
        返回true;
    }

    私有类jdbccoonect扩展的AsyncTask<太虚,整型,布尔>
    {

        @覆盖
        保护布尔doInBackground(空... PARAMS)
        {
            // TODO自动生成方法存根
            字符串username =斯科特;
            字符串password =虎;
            尝试
            {
                Log.d(HI,HI);
                的Class.forName(oracle.jdbc.OracleDriver);
                            //Class.forName("oracle.jdbc.driver.OracleDriver);



                / *数Connection conn =的DriverManager
                        .getConnection(JDBC:神谕:薄://@10.10.0.9:1521 /服务,
                                        用户名密码);*/

                Log.d(HI,HI);
            }
            赶上(ClassNotFoundException的E)
            {
                // TODO自动生成的catch块
                e.printStackTrace();
            }
            返回null;
        }

    }

}
 

ERROR:

  01-05 22:27:56.814:D / HI(1610):HI
01-05 22:27:57.005:E / dalvikvm(1610):找不到类的javax.management.MBeanServer中,从法oracle.jdbc.driver.OracleDriver.registerMBeans引用
01-05 22:27:57.005:W / dalvikvm(1610):VFY:无法解决入住投716(Ljavax /管理/ MBeanServer的;)在Loracle / JDBC /驱动器/一个OracleDriver;
01-05 22:27:57.005:D / dalvikvm(1610):VFY:更换运code在0x002d为0x1F
01-05 22:27:57.005:I / dalvikvm(1610):找不到方法java.lang.management.ManagementFactory.getPlatformMBeanServer,从方法oracle.jdbc.driver.OracleDriver.registerMBeans引用
01-05 22:27:57.005:W / dalvikvm(1610):VFY:无法解析静态方法3734:Ljava /朗/管理/ ManagementFactory; .getPlatformMBeanServer()Ljavax /管理/ MBeanServer的;
01-05 22:27:57.005:D / dalvikvm(1610):VFY:更换运code 0x71为0x0080
01-05 22:27:57.015:I / dalvikvm(1610):找不到方法java.lang.management.ManagementFactory.getPlatformMBeanServer,从方法oracle.jdbc.driver.OracleDriver.registerMBeans引用
01-05 22:27:57.015:W / dalvikvm(1610):VFY:无法解析静态方法3734:Ljava /朗/管理/ ManagementFactory; .getPlatformMBeanServer()Ljavax /管理/ MBeanServer的;
01-05 22:27:57.015:D / dalvikvm(1610):VFY:更换运code 0x71为0x0094
01-05 22:27:57.015:I / dalvikvm(1610):找不到方法java.lang.management.ManagementFactory.getPlatformMBeanServer,从方法oracle.jdbc.driver.OracleDriver.registerMBeans引用
01-05 22:27:57.015:W / dalvikvm(1610):VFY:无法解析静态方法3734:Ljava /朗/管理/ ManagementFactory; .getPlatformMBeanServer()Ljavax /管理/ MBeanServer的;
01-05 22:27:57.015:D / dalvikvm(1610):VFY:更换运code 0x71在0x00a8
01-05 22:27:57.015:I / dalvikvm(1610):找不到方法java.lang.management.ManagementFactory.getPlatformMBeanServer,从方法oracle.jdbc.driver.OracleDriver.registerMBeans引用
01-05 22:27:57.015:W / dalvikvm(1610):VFY:无法解析静态方法3734:Ljava /朗/管理/ ManagementFactory; .getPlatformMBeanServer()Ljavax /管理/ MBeanServer的;
01-05 22:27:57.015:D / dalvikvm(1610):VFY:在0x00bc更换运code 0x71
01-05 22:27:57.015:I / dalvikvm(1610):找不到方法java.lang.management.ManagementFactory.getPlatformMBeanServer,从方法oracle.jdbc.driver.OracleDriver.registerMBeans引用
01-05 22:27:57.015:W / dalvikvm(1610):VFY:无法解析静态方法3734:Ljava /朗/管理/ ManagementFactory; .getPlatformMBeanServer()Ljavax /管理/ MBeanServer的;
01-05 22:27:57.015:D / dalvikvm(1610):VFY:更换运code在0x00d1 0x71
01-05 22:27:57.025:W / dalvikvm(1610):VFY:无法解决的异常类712(Ljavax /管理/ JMException;)
01-05 22:27:57.025:W / dalvikvm(1610):VFY:无法解决的异常类712(Ljavax /管理/ JMException;)
01-05 22:27:57.025:W / dalvikvm(1610):VFY:无法解决的异常类712(Ljavax /管理/ JMException;)
01-05 22:27:57.025:W / dalvikvm(1610):VFY:无法找到的地址0xFA回应异常处理程序
01-05 22:27:57.025:W / dalvikvm(1610):VFY:拒绝Loracle / JDBC /驱动器/一个OracleDriver; .registerMBeans()V
01-05 22:27:57.025:W / dalvikvm(1610):VFY:拒绝运code 0X0D在0x00fa
01-05 22:27:57.025:W / dalvikvm(1610):VFY:拒绝Loracle / JDBC /驱动器/一个OracleDriver; .registerMBeans()V
01-05 22:27:57.025:W / dalvikvm(1610):验证拒绝类Loracle / JDBC /驱动器/一个OracleDriver;
01-05 22:27:57.035:W / System.err的(1610):抛出java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver
01-05 22:27:57.055:W / System.err的(1610):在java.lang.Class.classForName(本机方法)
01-05 22:27:57.055:W / System.err的(1610):在java.lang.Class.forName(Class.java:234)
01-05 22:27:57.055:W / System.err的(1610):在java.lang.Class.forName(Class.java:181)
01-05 22:27:57.055:W / System.err的(1610):在at.security.jdbcsecuritydemo.MainActivity $ jdbccoonect.doInBackground(MainActivity.java:51)
01-05 22:27:57.055:W / System.err的(1610):在at.security.jdbcsecuritydemo.MainActivity $ jdbccoonect.doInBackground(MainActivity.java:1)
01-05 22:27:57.065:W / System.err的(1610):在android.os.AsyncTask $ 2.call(AsyncTask.java:185)
01-05 22:27:57.065:W / System.err的(1610):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:306)
01-05 22:27:57.065:W / System.err的(1610):在java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-05 22:27:57.065:W / System.err的(1610):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-05 22:27:57.065:W / System.err的(1610):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:581)
01-05 22:27:57.075:W / System.err的(1610):在java.lang.Thread.run(Thread.java:1019)
01-05 22:27:57.085:W / System.err的(1610):java.lang.VerifyError:产生的原因oracle.jdbc.driver.OracleDriver
01-05 22:27:57.085:W / System.err的(1610):11 ...更多
01-05 22:27:57.205:D / gralloc_goldfish(1610):没有GPU的仿真模拟器检测。
 

解决方案

Android的Java是甲骨文的Java不同。其中一个主要的差异是类库不同于Java标准版(SE)。

在你的情况下,这意味着 ojdbc6.jar 将不会在Android的Java环境中运行,因为某些Java SE的类,但尚未在Android上使用。该错误消息提到 javax.management.MBeanServer中。但我pretty的肯定,这不是唯一的一个。

我不认为你可以让 ojdbc6.jar 在Android上运行。它已经令人惊讶的是将ojdbc14.jar 的作品。因此,留在这,或者重新设计你的应用程序通过中间服务器中去。

Hi i want to create a connection to my Oracle database. i previously used ojdbc14.jar and everything was working fine, but the connection should be secure and i want to encrypt the files. so i decided to use ojdbc5.jar now. the jar is im my "libs" folder

Reasons for changing from jdbc14 to jdbc6 i want to use Properties for a secure data exchange between my DB and my devices

earlier i also tried jdbc5 but with this i only got a java Heap Size error.

public class MainActivity extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        jdbccoonect connect = new jdbccoonect();
        connect.execute();


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    private class jdbccoonect extends AsyncTask<Void, Integer, Boolean>
    {

        @Override
        protected Boolean doInBackground(Void... params)
        {
            // TODO Auto-generated method stub
            String username = "scott";
            String password = "tiger";
            try
            {
                Log.d("HI","HI");
                Class.forName("oracle.jdbc.OracleDriver");
                            //Class.forName("oracle.jdbc.driver.OracleDriver");



                /*Connection conn = DriverManager
                        .getConnection("jdbc:oracle:thin://@10.10.0.9:1521/service",
                                        username, password);*/

                Log.d("HI","HI");
            }
            catch (ClassNotFoundException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

    }

}

ERROR:

01-05 22:27:56.814: D/HI(1610): HI
01-05 22:27:57.005: E/dalvikvm(1610): Could not find class 'javax.management.MBeanServer', referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
01-05 22:27:57.005: W/dalvikvm(1610): VFY: unable to resolve check-cast 716 (Ljavax/management/MBeanServer;) in Loracle/jdbc/driver/OracleDriver;
01-05 22:27:57.005: D/dalvikvm(1610): VFY: replacing opcode 0x1f at 0x002d
01-05 22:27:57.005: I/dalvikvm(1610): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
01-05 22:27:57.005: W/dalvikvm(1610): VFY: unable to resolve static method 3734: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
01-05 22:27:57.005: D/dalvikvm(1610): VFY: replacing opcode 0x71 at 0x0080
01-05 22:27:57.015: I/dalvikvm(1610): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
01-05 22:27:57.015: W/dalvikvm(1610): VFY: unable to resolve static method 3734: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
01-05 22:27:57.015: D/dalvikvm(1610): VFY: replacing opcode 0x71 at 0x0094
01-05 22:27:57.015: I/dalvikvm(1610): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
01-05 22:27:57.015: W/dalvikvm(1610): VFY: unable to resolve static method 3734: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
01-05 22:27:57.015: D/dalvikvm(1610): VFY: replacing opcode 0x71 at 0x00a8
01-05 22:27:57.015: I/dalvikvm(1610): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
01-05 22:27:57.015: W/dalvikvm(1610): VFY: unable to resolve static method 3734: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
01-05 22:27:57.015: D/dalvikvm(1610): VFY: replacing opcode 0x71 at 0x00bc
01-05 22:27:57.015: I/dalvikvm(1610): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans
01-05 22:27:57.015: W/dalvikvm(1610): VFY: unable to resolve static method 3734: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer ()Ljavax/management/MBeanServer;
01-05 22:27:57.015: D/dalvikvm(1610): VFY: replacing opcode 0x71 at 0x00d1
01-05 22:27:57.025: W/dalvikvm(1610): VFY: unable to resolve exception class 712 (Ljavax/management/JMException;)
01-05 22:27:57.025: W/dalvikvm(1610): VFY: unable to resolve exception class 712 (Ljavax/management/JMException;)
01-05 22:27:57.025: W/dalvikvm(1610): VFY: unable to resolve exception class 712 (Ljavax/management/JMException;)
01-05 22:27:57.025: W/dalvikvm(1610): VFY: unable to find exception handler at addr 0xfa
01-05 22:27:57.025: W/dalvikvm(1610): VFY: rejected Loracle/jdbc/driver/OracleDriver;.registerMBeans ()V
01-05 22:27:57.025: W/dalvikvm(1610): VFY: rejecting opcode 0x0d at 0x00fa
01-05 22:27:57.025: W/dalvikvm(1610): VFY: rejected Loracle/jdbc/driver/OracleDriver;.registerMBeans ()V
01-05 22:27:57.025: W/dalvikvm(1610): Verifier rejected class Loracle/jdbc/driver/OracleDriver;
01-05 22:27:57.035: W/System.err(1610): java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
01-05 22:27:57.055: W/System.err(1610): at java.lang.Class.classForName(Native Method)
01-05 22:27:57.055: W/System.err(1610): at java.lang.Class.forName(Class.java:234)
01-05 22:27:57.055: W/System.err(1610): at java.lang.Class.forName(Class.java:181)
01-05 22:27:57.055: W/System.err(1610): at at.security.jdbcsecuritydemo.MainActivity$jdbccoonect.doInBackground(MainActivity.java:51)
01-05 22:27:57.055: W/System.err(1610): at at.security.jdbcsecuritydemo.MainActivity$jdbccoonect.doInBackground(MainActivity.java:1)
01-05 22:27:57.065: W/System.err(1610): at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-05 22:27:57.065: W/System.err(1610): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-05 22:27:57.065: W/System.err(1610): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-05 22:27:57.065: W/System.err(1610): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-05 22:27:57.065: W/System.err(1610): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-05 22:27:57.075: W/System.err(1610): at java.lang.Thread.run(Thread.java:1019)
01-05 22:27:57.085: W/System.err(1610): Caused by: java.lang.VerifyError: oracle.jdbc.driver.OracleDriver
01-05 22:27:57.085: W/System.err(1610): ... 11 more
01-05 22:27:57.205: D/gralloc_goldfish(1610): Emulator without GPU emulation detected.

解决方案

Android's Java is different from Oracle's Java. One of the main differences is the class library that differs from the Java Standard Edition (SE).

In your case that means that ojdbc6.jar won't run in Android's Java environment because certain Java SE classes are required but not available on Android. The error message mentions javax.management.MBeanServer. But I'm pretty sure that's not the only one.

I don't think you can make ojdbc6.jar work on Android. It's already surprising that ojdbc14.jar works. So stay with it, or redesign your app to go via an intermediary server.

这篇关于Android的Oracle数据库JDBC6的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆