2011-12-07 11 views
0

私は以前のJavaプログラムのクラスに基づくAndroidアプリを開発しています。しかし、Javaプロジェクトからメソッドを呼び出そうとするたびに、Androidエミュレータでエラーが発生します。「残念ながら、MyAppは停止しました。」Android - 他のJavaプロジェクトのメソッドを使用する方法

例:Userクラスがそうのように定義されて

Toast.makeText(getBaseContext(), User.dummyString(), Toast.LENGTH_SHORT).show(); 

原因このエラー、:

public class User { 

    public static String dummyString(){ 
     return "Hello hello"; 
    } 

} 

私はJavaプロジェクトは、Androidプロジェクトのビルド・パスに追加した、と私は、Javaプロジェクトのビルドパスの[注文]タブと[エクスポート]タブでsrcフォルダをチェックしました。この問題を解決するにはどうすればよいですか?

+0

エラーの実際のスタックトレースのLogcatを印刷できますか? 「残念ながら、MyAppは停止しました。」エンドユーザメッセージです。 – Andrew

+0

ああ、それを見つけた! Logcatはあちこちに物を投げていたので、私はそれを逃してしまったに違いない。これは、関連する1のようだ: _java.lang.NoClassDefFoundError:それはしかし、クラスの定義を見つけることができない理由についてcom.GC01.Coursework.User_ まだ明確ではありません... – user1002973

+0

は、私は以下の回答を掲載しました。覚えておいて、Logcatはあなたの友人です。 – Andrew

答えて

0

最初に、Userクラスのインスタンス化が間違っているようです。

を使用する代わりに。

User.dummyString(); 

あなたは...このよう

User user = new User(); 

それをインスタンス化し、それをあなたの方法を使用してみてください。

また、取得したエラーを投稿した場合に役立ちます。

+0

dummyString()メソッドは静的なので、彼はokをやっていると思うので、User.dummyString(); –

+0

dummyString()は静的メソッドなので、ユーザをインスタンス化する必要があります。 – nwaltham

+0

静的メソッドです。インスタンスを作成せずにクラスの名前を直接使用しています。とにかく 'new User();をインスタンス化してみましたが、同じエラーが発生しました。試しにそのエラーが何であるか教えてくれるわけではありません。それは私に[this](http://imgur.com/u3vvM)を表示してからアプリケーションを閉じます。 – user1002973

0

java.lang.NoClassDefFoundError: com.GC01.Coursework.Userは、あなたのUserクラスが見つかりませんでした。あなたはライブラリをリンクしていますが、apkはそれをパッケージ化していません。最も簡単な修正は、ソースをプロジェクトに直接入れることですが、おそらくあなたのビルドプロセスを再度確認する必要があります。

+0

プロジェクトに直接ソースを含める必要があると言うときは、関連するコードを含むフォルダをコピーすることを意味しますか? Javaプロジェクトを並行して開発していて、すべての変更を2回行う必要はありません。ビルドプロセスでは、どのようなことをチェックしなければなりませんか? – user1002973

+0

ソース管理で開発している場合は、コードを最新の状態に保つことは難しいことではありません。 (git:http://www.eclipse.org/resources/resource.php?id=528、svn:http://subclipse.tigris.org/)しかし、あなたがコードの単一のコピーを保持することを主張するならば、正式なアンドロイドのリファレンスは私のために働く:http://developer.android.com/guide/developing/projects/projects-eclipse.html#ReferencingLibraryProject – Andrew

+0

私の後者の解決策は、アンドロイドライブラリのためだけに、あなたの他のソースリンクしようとしていません。非アンドロイドライブラリの場合、Dalvikはlibフォルダ内のコンパイル済みのjarファイルを必要とするか、プロジェクトに追加されません(ビルドパスにソースの場所を記載していても)。これまでに受け入れられた解決策を見てください:http://stackoverflow.com/a/2539055/902730 – Andrew

関連する問題