致命异常:main java.lang.VerifyError:net.sourceforge.jtds.jdbc.TdsCore

问题描述:

在我的Android项目中,我使用jtds.jdbc连接到SQL Server数据库。当试图连接时,我写了错误的连接字符串,它抛出一个错误,说:“Network error IOException: Connection timed out”。致命异常:main java.lang.VerifyError:net.sourceforge.jtds.jdbc.TdsCore

 Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance(); 

     Connection DbConn = DriverManager.getConnection(192.168.xx.xx:1085/SomeDatabase;integratedSecurity=true;user=xxx;password=xxx;instanceName=SomeInstance); 

     Statement stmt = DbConn.createStatement(); 
     ResultSet reset = stmt.executeQuery(" select * from SomeTable"); 

     Log.i("RESULTS", reset.getString(1)); 

     DbConn.close(); 

这证明JTDS包含在我的项目中并正在工作。但是,当我写正确的连接字符串,我得到了以下错误:

11-28 08:09:31.929: I/dalvikvm(13041): Could not find method org.ietf.jgss.GSSManager.getInstance, referenced from method net.sourceforge.jtds.jdbc.TdsCore.createGssToken 
11-28 08:09:31.929: W/dalvikvm(13041): VFY: unable to resolve static method 7980: Lorg/ietf/jgss/GSSManager;.getInstance()Lorg/ietf/jgss/GSSManager; 
11-28 08:09:31.929: D/dalvikvm(13041): VFY: replacing opcode 0x71 at 0x0001 
11-28 08:09:31.929: D/dalvikvm(13041): VFY: dead code 0x0004-0090 in Lnet/sourceforge/jtds/jdbc/TdsCore;.createGssToken()[B 
11-28 08:09:31.949: I/dalvikvm(13041): Could not find method org.ietf.jgss.GSSContext.initSecContext, referenced from method net.sourceforge.jtds.jdbc.TdsCore.sendGssToken 
11-28 08:09:31.949: W/dalvikvm(13041): VFY: unable to resolve interface method 7974: Lorg/ietf/jgss/GSSContext;.initSecContext ([BII)[B 
11-28 08:09:31.949: D/dalvikvm(13041): VFY: replacing opcode 0x72 at 0x0008 
11-28 08:09:31.949: W/dalvikvm(13041): VFY: unable to resolve exception class 1082 (Lorg/ietf/jgss/GSSException;) 
11-28 08:09:31.949: W/dalvikvm(13041): VFY: unable to find exception handler at addr 0x4c 
11-28 08:09:31.949: W/dalvikvm(13041): VFY: rejected Lnet/sourceforge/jtds/jdbc/TdsCore;.sendGssToken()V 
11-28 08:09:31.949: W/dalvikvm(13041): VFY: rejecting opcode 0x0d at 0x004c 
11-28 08:09:31.949: W/dalvikvm(13041): VFY: rejected Lnet/sourceforge/jtds/jdbc/TdsCore;.sendGssToken()V 
11-28 08:09:31.949: W/dalvikvm(13041): Verifier rejected class Lnet/sourceforge/jtds/jdbc/TdsCore; 
11-28 08:09:31.949: D/AndroidRuntime(13041): Shutting down VM 
11-28 08:09:31.949: W/dalvikvm(13041): threadid=1: thread exiting with uncaught exception (group=0x40018560) 
11-28 08:09:32.189: E/AndroidRuntime(13041): FATAL EXCEPTION: main 
11-28 08:09:32.189: E/AndroidRuntime(13041): java.lang.VerifyError: net.sourceforge.jtds.jdbc.TdsCore 
11-28 08:09:32.189: E/AndroidRuntime(13041): at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:359) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at java.sql.DriverManager.getConnection(DriverManager.java:180) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at java.sql.DriverManager.getConnection(DriverManager.java:145) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at fip.cis.k.PostavkeActivity$1.onClick(PostavkeActivity.java:50) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at android.view.View.performClick(View.java:2501) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at android.view.View$PerformClick.run(View.java:9107) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at android.os.Handler.handleCallback(Handler.java:587) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at android.os.Looper.loop(Looper.java:130) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at android.app.ActivityThread.main(ActivityThread.java:3835) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at java.lang.reflect.Method.invokeNative(Native Method) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at java.lang.reflect.Method.invoke(Method.java:507) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
11-28 08:09:32.189: E/AndroidRuntime(13041): at dalvik.system.NativeStart.main(Native Method) 

JTDS-1.3.1.jar在libs文件夹和Android的私人图书馆,为了和出口检查。

GSSManager是来自Java的一类。但是我确实在构建中包含了jre7。

我曾尝试:

  • 所有的技巧与构建路径
  • 变化的java compilance水平

有什么建议?

编辑:sendGssToken()方法是在两org.ietf.jgss.GSSManager和net.sourceforge.jrds.jdbc.TdsCore类

我只是用一个早期的教罐子发现,它的工作。

+2

有同样的问题,跳回到使用jtds-1.3.0.jar和问题解决。 +1 –

+0

我也一样jtds-1.3.0工作 – LairdPleng