これが私がこれまでに行った手順ですが、運がありません。私はJavaプロジェクトに非常に慣れていないので、明らかな何かが欠けているのではないかと思います。
Eclipseを使用して、TestSDKという単純なJavaプロジェクトを作成し、その中にcom.test.testsdkというパッケージを作成し、その中に次のクラスを作成しました。
package com.test.testsdk;
public class TestClass {
public void TestMethod() {
}
}
これは、エラーや警告なしでコンパイルされます。
次に、Eclipseと標準のエクスポートオプション(生成されたクラスファイルとリソースのエクスポート、JARの内容の圧縮、マニフェストファイルの生成)を使用して、これをJARファイル(TestSDK.jar)としてエクスポートします。私はJARを封印することと封印しないことの両方を試しましたが、違いはありません。
次に、ウィザードリストの[ファイル]->[新規]->[プロジェクト]から新しいAndroidアプリケーションプロジェクトを作成します。これは、Androidエミュレーターとテストデバイスの両方で警告やエラーなしでコンパイルおよび実行されます(hello worldメッセージが表示されます)。
次に、TestSDK.jarファイルへの参照を追加し(後で拡張するため、さまざまなメソッドを使用して)、それをメインの(そして唯一の)Androidアクティビティにインポートし、TestClassをインスタンス化してTestMethodを呼び出します。そのようです:
package com.apptest.mobilesdktestapp;
import android.app.Activity;
import android.os.Bundle;
import com.test.testsdk.TestClass;
public class MobileSDKTestAppActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TestClass test = new TestClass();
test.TestMethod();
}
}
これは、警告やエラーなしで正常にコンパイルされます。ただし、エミュレータまたはデバイスで実行しようとすると、LogCatウィンドウに次のエラーが表示されます。
AndroidRuntime Uncaught handler: thread main exiting due to uncaught exception
AndroidRuntime java.lang.NoClassDefFoundError: com.test.testsdk.TestClass
WebでNoClassDefFoundError
結果を検索すると、クラスパスが正しくなるようにJARファイルをインポートする方法に関する多くの提案が得られます。その結果、JARファイルをインポートする次のすべての方法を試しました。
プロジェクトプロパティのJavaビルドパスの[ライブラリ]タブから[外部JARを追加...]をクリックし、[注文とエクスポート]タブでJARをチェックします(またはチェックしませんでした。両方を試しました)。また、JARを[注文とエクスポート]リストの一番上に移動してみましたが、違いはありませんでした。
プロジェクトに「libs」フォルダーを作成し、そこにJARを追加します。その後、JARがプロジェクトリストの「AndroidDependencies」にも追加されることを確認しました。また、JARファイルを右クリックし、[ビルドパス]-> [ビルドパスに追加]を選択してみましたが、違いはありませんでした。
JARをAndroidアプリケーションプロジェクトディレクトリに移動し、手順1のように外部JARの代わりに「JARを追加...」を実行します。また、エクスポートするかどうか、および注文リストの一番上に移動するかどうかのすべての順列。
その後、JARファイルとしてパッケージ化された他のサードパーティSDKをダウンロードし、それらをまったく同じAndroidアプリケーションプロジェクトに含めました。これらはすべて、上記の3つの方法のいずれかを使用して正常に機能しました(これらのSDKからクラスをインスタンス化して、エラーなしで)、これにより、TestSDKプロジェクトやクラスで何かが足りないか、何か間違ったことをしているため、Androidアプリケーションプロジェクトでの使用が妨げられていると思います。
私が言ったように、私はJavaに非常に慣れていないので、それが私が見落としていた単純なものであることを望んでいます。任意のヘルプやガイダンスをいただければ幸いです。