gpt4 book ai didi

java - 建立 AWS 连接时 Android 中出现 ClassDefNotFound 错误

转载 作者:行者123 更新时间:2023-12-01 10:03:14 25 4
gpt4 key购买 nike

我一直在开发一个 Android 项目来连接到存储在我的 EC2 实例中的表。我单独制作了连接代码并进行了测试。它显示了所需的输出,但问题是,当我尝试将代码集成到 Android 项目时,它会抛出某些 Hive 库的“ClassDefNotFound”错误。

MainActivity.java

package com.example.blockbuster;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends ActionBarActivity {

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

searchButton = (Button)findViewById(R.id.search_button);
}

public void clickSearch(View view){
Intent intent = new Intent(this,PopulateOnUi.class);
startActivity(intent);
}

}

PopulateOnUi.java

package com.example.blockbuster;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

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

public class PopulateOnUi extends ActionBarActivity {

ListView listview;
TextView tv1;
String data = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_populate_on_ui);
String[] values = new String[]{"data1","data2","data3","data4", "data5"};
String data = null;
//////////////////////////////////////////////////////////
String driverName = "com.amazon.hive.jdbc3.HS2Driver";
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
// System.exit(1);
}
try {
Connection con = DriverManager.getConnection("jdbc:hive2://xx.xxx.xxx.xx:10000/default", "", "");
Statement stmt = con.createStatement();
String tableName = "msd";
// show tables
String sql = "show tables '" + tableName + "'";
//System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
if (res.next()) {
// System.out.println(res.getString(1));
data = res.getString(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


//////////////////////////////////////////////////////////////////
tv1 = (TextView)findViewById(R.id.textView1);
tv1.setText(data);
//listview = (ListView)findViewById(R.id.listView1);

// ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
// android.R.layout.simple_list_item_1,android.R.id.text1,data);
// listview.setAdapter(adapter);
}
}

我已经在android项目的构建路径中添加了connectionHive部分所需的所有jar,以及权限“uses-permission android:name="android.permission.INTERNET"”Logs file 。任何人都可以发现错误吗?

最佳答案

如果您阅读错误消息,它会明确指出找不到类 javax.security.sasl.Sasl。该类未随 Android 一起打包,您需要将其包含在您的应用程序中。 This看起来是一个可能的起点。

您还可以尝试阅读此处提出的其他类似问题,例如:Is there SASL implementation that works on Android?

关于java - 建立 AWS 连接时 Android 中出现 ClassDefNotFound 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36654731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com