添加类时未找到类异常

时间:2013-09-06 12:07:48

标签: java android

我正在Android中进行SqlServer连接。

我包含了所有必要的jar文件。

enter image description here

Buildpath Snap:

enter image description here

错误行:

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

订购& EXPORT:

enter image description here

修改

package com.example.sqlservercall;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;


public class MainActivity extends Activity {


    String url="jdbc:sqlserver://10.0.2.2;instance=14GRAFICALI\\MSSQLSERVER2008;databaseName=AndroidDB;integrated security=true";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        TextView tvData=(TextView)findViewById(R.id.tvSelectedData);

        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
            Connection conn =DriverManager.getConnection(url);                   

            System.out.println("connected");
            Statement statement=conn.createStatement();
            ResultSet resultSet=statement.executeQuery("select * from AndroidDB");
            while(resultSet.next()){
                tvData.setText(" Data1 : "+resultSet.getString(1)+"  Data 2 : "+resultSet.getNString(2));
            }

        } catch (Exception e) {
            e.printStackTrace();
            tvData.setText(e.getMessage());
        }



    }

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

}

异常详细:

enter image description here

新错误afeter按顺序检查罐子并导出:

Unable to execute dex: Multiple dex files define Lcom/microsoft/sqlserver/jdbc/ActivityCorrelator$1;
[2013-09-06 18:24:04 - SQLServerCall] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/microsoft/sqlserver/jdbc/ActivityCorrelator$1;
[2013-09-06 18:24:23 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/microsoft/sqlserver/jdbc/ActivityCorrelator$1;
[2013-09-06 18:24:23 - SQLServerCall] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/microsoft/sqlserver/jdbc/ActivityCorrelator$1;

3 个答案:

答案 0 :(得分:1)

确保这些库位于“Android私有库”中,并在Order and Export标签中添加“Android私有库”。

libs目录中的库放入应该已经足够了,您不需要将它们添加到构建路径,因为libs目录中的所有文件都会自动添加到构建路径中(通过“Android私人图书馆”)。

我也相信你试图实例化错误的类,尝试使用类名 com.microsoft.sqlserver.jdbc.SQLServerDriver (我在你的截图中注意到真正的包名是 {{ 1}} com.microsoft.sqlserver.jdbc

编辑:(更新后更新的答案)

我假设sqljdbc.jar和sqljdbc4.jar都包含相同的类,如果是这种情况,你只能在项目中包含其中一个。

答案 1 :(得分:1)

从屏幕截图中我可以看到,您应该替换:

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")

with:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

答案 2 :(得分:1)

错误是“多个Dex文件”所以必须根据你的屏幕截图多次添加Same jar看 Buildpath Snap:有两个 sqljdbc.ja **河只保留一个(保留最新的一个,删除其他)然后转到**订单&导出:并选中所有复选框。喜欢Android支持版本4也。它将解决您的问题..