2010-12-31 21 views
16

私はプロジェクト参照として別のプロジェクトを利用するアンドロイドアプリケーションを持っています。私は、アプリケーションのオプションに入って、パスを構築し、プロジェクト参照でプロジェクトを選択しました。アンドロイドでの外部プロジェクトの参照

すべてがうまく構築されてデプロイされますが、アプリケーションを実行してそのプロジェクトでクラスをインスタンス化しようとすると、java.lang.NoClassDefFoundError errrrrrが発生します。

私はJavaプロジェクトの専門家ではありません。だから私は単純なものを何かコックしたと思います。何か案は?

+1

さらに多くの調査では、私はプロジェクトオプションのアンドロイドタブの下に "ライブラリ"として参照されているプロジェクトをマークする必要があると思うが、それをクリックするたびに、オプションをもう一度開くと、チェックが外されます。 –

+0

OK、私はツリー全体をチェックアウトしました(TFS + eclipseはやりにくく思われます)。そして、最終的にIsライブラリが永続化されましたが、NoClassDefFoundErrorを取得しました。 :( –

答えて

0

依存プロジェクトのコンパイル済みソースのJARを親と一緒に含める必要がある場合があります。 AndroidはDalvikバイトコードに再コンパイルしてクラスパス上で利用できるようにクラスファイルを持つ必要があります。

This videoは、this questionから取得できます。

+1

.jarファイルを追加する際の問題は、参照プロジェクトが変更されたときに自動的に更新されないということです。参照プロジェクトは現在開発中であり、エクスポートしなければならないという厄介な痛みです私は変更を行うたびにjarファイルに変換します。私はそれがプロジェクトを参照する全体のポイントであって、jarファイルではないと考えました。 –

+1

次に、Mavenなどの依存関係解決をサポートする適切なビルドシステムを導入します。その結果、既存のプロジェクト間でコードを共有しながらコードを稼働させて以来、 –

2

私は同様の問題を抱えています。私は古いプロジェクトをいくつかの数学と3D関数の名前空間として使用しています - これをAndroidと他のJavaコードの間で共有したいと思います。問題は、私の図書館からPODの種類さえ分かり次第、クラッシュすることです。私の外部プロジェクトはjarファイルを生成しません。これは名前空間としてのみ使用されます。 これは、実行時のリンクの問題は、これを引き起こしていると仮定していますが、アンドロイド、EclipseとJavaは、総括的に私に何の助けもない総額を与えています。

+1

をビルドするたびに含まれるJARが更新されます。 Androidは明らかに別のプロジェクトを外部から参照するのが好きではありませんが、プロジェクトのプロパティにアクセスしてライブラリのソースコードをリンクすれば、コードを動作させるために必要な内部のgubbinsを実行できます。 - > properties-> Java Build Path-> link source ...を選択し、ルートディレクトリからライブラリを追加します。 – Luther

+0

ティム、それをしたとき、それはあなたのパッケージを台無しにしましたか?私はそれをしました、そして今、参照されているライブラリからsrc.com ...でなく私のパッケージ名が期待されています...それはフォルダ/パッケージの規約を実施しているからです。私は代わりに/ srcフォルダをブラウズしてみましたが、リンクしていますが、そのプロジェクトへの参照をすべて削除したにもかかわらず、 "フォルダは既にソースフォルダです"と表示されます。 –

+0

私はこの問題に遭遇しませんでしたが、いくつかの設定ファイルのいくつかの問題がありましたが、私が何を試しても解決できなかった複数のソースディレクトリが含まれていました(いくつかのファイルを無視するオプションがありますまったく働く)。私のプロジェクトは内部的にパッケージ/フォルダのコンベンションに従っているので、おそらく私はあなたの問題を見ていないのです。一度設定すればEclipseはうまくいっていますが、最初のセットアップ段階は本当に苦しいことがあります。 – Luther

10

この問題の回避策がいくつかあります。ライブラリをAndroidライブラリとして確認することができます: プロジェクト/プロパティ/ Androidタブを右クリック - "is library"。

メインプロジェクト: プロジェクト/プロパティ/ Androidタブ - >追加(ライブラリプロジェクトを追加)を右クリックします。

ただし、ライブラリをEclipse Androidプロジェクトとして最初に作成する必要があります(Androidプロパティセクションをプロジェクトプロパティで利用できるようにする必要があります)。

これを実行しましたが、NoClassDefFoundErrorはもうありません。それでもこのソリューションは初期の開発には適しています。ライブラリが安定している場合は、jarファイルを作成してメインプロジェクトにインクルードし(Androidライブラリへの参照を削除する)必要があります。

0

外部プロジェクトがそのクラスパス内の他のjarに依存する場合は、エクスポートされていることを確認し、Eclipseのエクスポートリストの一番上にプッシュします。プロジェクトにあったクラスで同じNoClassDefエラーが発生しましたが、本当の問題はそれが依存するjarファイルのエクスポート順序にありました。私はこれを修正した後うまく働いた。 Eclipseを

23

は、「アンドロイド・プロジェクト」に行く - >プロパティ - > Javaビルド・パス - >注文や専門家、そしてインポートし、すべてのエントリの上にそれを移動したいJavaプロジェクトを選択します。

+2

「Javaプロジェクトを選択する」とは、チェックボックスを有効にすることも意味します。 – sjngm

+0

この奇妙なことがやっと働いた。プロジェクトをリストの先頭に移動することが重要でした。 – JaakL

+0

:)このコメントで私はしばらく時間を節約できました。そんな簡単な見落としに感謝します! –

1

私は最近、非常に類似しており、おそらく同じ問題に出くわしました。 Androidはプロジェクトへの参照を好まず、あなたのAndroidプロジェクトが別のプロジェクトを参照しようとすると、これらの反射の例外がスローされます。

はまた、ビルド・パスにjarファイルを持っているようなdoesntの、何をする必要があるとあなたがあなたのアンドロイドプロジェクトに含めると/ LIBSのフォルダに配置するプロジェクトをエクスポートしています。このフォルダは通常、プロジェクトが作成されたときに作成されます。自分で作っただけでなく、プロジェクトのルートにある場合もあります。 Androidがそこにいる場合、Androidは自動的にそれらをピックアップします。

また、外部プロジェクトも他のプロジェクトに依存する場合は、それらの他のプロジェクトもエクスポートする必要があります。また、Androidプロジェクトの/ libsフォルダにjarファイルを配置する必要があります。

これは、22/07/2012現在のアンドロイドの最新リリースのケースです。古いバージョンのAndroidを使用している場合は適用されません。

2

私は同じ問題を抱えています。リトルリサーチは私に図書館プロジェクトにも導かれました。しかし、これに気をつけてください:

"Androidプロジェクトをライブラリプロジェクトとして指定することもできます。これにより、Androidプロジェクトがライブラリプロジェクトとして指定されると、にすることはできませんをデバイスにインストールしてください。

あなたはより多くの情報を見つけることができます。

http://developer.android.com/tools/projects/projects-eclipse.html

とも

https://groups.google.com/forum/?fromgroups#!topic/android-developers/C0pddRNGZVs

+0

Androidタブを使ってライブラリを追加することはやりました。このページにまったく同じことをするレシピがたくさんあるような痛みです – Eric

0

コンテキスト:ウェブ上の複数のAndroidデバイスとのインタフェースJSPのウェブサイトの開発を。共通のクラスが必要です。撮影した

ステップ:あなたのアンドロイドアプリのプロジェクトのために

1)(何もしない)

:あなたの一般的なクラスを含むJavaプロジェクトのために

1)プロジェクトのプロパティ - > Javaビルドパス - >プロジェクトタブ - >追加...

2)プロジェクトプロパティ - >プロジェクト参照 - >チェックボックスを適切に設定

3)[Android - プロジェクト] - > [プロパティ] - > [Javaビルドパス] - > [オーダーとエキスパート]の順に選択し、インポートするJavaプロジェクトを選択し、それをすべてのエントリの上に移動します。あなたのJSPのウェブサイトのプロジェクトのために

1)プロジェクトのプロパティ - > JavaがPath->プロジェクトタブ - >追加...

2)プロジェクトのプロパティ - >プロジェクトReferences->設定check-を構築それに応じてボックス

関連する問題