私はEC2インスタンスに格納されたテーブルに接続するためにAndroidプロジェクトで作業していました。私は別途接続コードを作ってテストしました。それは出力を表示しているが、問題は、Androidプロジェクトにコードを統合しようとすると、Hiveライブラリのエラー "ClassDefNotFound"エラーがスローされるということです。AWS接続時にAndroidで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一部で必要とされた瓶とも権限が追加されました」使用許諾android:name = "android.permission.INTERNET" "Logs file。誰もがエラーを見つけることができますか?
あなたはあなたのアプリケーションログから実際の例外を投稿する必要があります。それはあなたが見つけることができないクラスを正確に教えてくれるでしょう。 –
ログファイルを追加しました。 –