130

これは、EclipseのAndroidプロジェクトにサードパーティライブラリ(JAR)を追加することに関する2部構成の質問です。

質問の最初の部分は、サードパーティのJAR(ライブラリ)をAndroidプロジェクトに追加しようとすると、最初に次の問題が発生することです。

XMLの解析エラー:バインドされていないプレフィックス

そのJARのクラスを使用しようとしているためです(そして、何らかの方法でプレフィックスを定義する必要があります)。どうしたの?

次に、(それを修正した後、答えは以下に示されています)、私のアプリケーションはAndroidで動作せず、デバッガー(LogCat)を介して、消費しようとしているクラスが存在しないことを発見しました。

原因:java.lang.ClassNotFoundException:com.github.droidfu.widgets.WebImageView .. ..

Eclipseでコンパイルまたはリンカーエラーが発生しないのに、エミュレーターでこの問題が発生するのはなぜですか?

これらの2つの質問は、以下で自分で答えるという意味で、レトリックです。このフォーラムの他の投稿は問題に忍び寄り、他の場所では議論がありますが、私は次の人がやって来るのをより明確に助けることができると感じています。

4

8 に答える 8

316

次に、クラスの欠落の問題について説明します。

私はEclipseJavaEE開発者であり、ビルドパスの「ユーザーライブラリ」メカニズムを介してサードパーティライブラリを追加する習慣が長年あります。もちろん、サードパーティのライブラリを追加する方法は少なくとも3つあります。私の控えめな意見では、私が使用する方法が最もエレガントです。

ただし、これは、Dalvik "JVM"が通常のJavaコンパイル済みクラスを処理できないAndroidの場合は機能しませんが、特別な形式に変換する必要があります。これは、私がやらない方法でライブラリを追加した場合には発生しません。

代わりに、サードパーティのライブラリをインポートするための(広く利用可能な)指示に従い、ビルドパスを使用して追加します(これにより、コンパイルの目的でEclipseに認識されます)。ステップバイステップは次のとおりです。

  1. ライブラリをホスト開発システムにダウンロードします。
  2. Eclipse/Androidプロジェクトに新しいフォルダーlibsを作成します。
  3. libsを右クリックし、[インポート]->[一般]->[ファイルシステム]を選択し、[次へ]、ファイルシステムを参照して、ライブラリの親ディレクトリ(つまり、ダウンロード先)を見つけます。
  4. [OK]をクリックし、左側のペインでディレクトリ名(チェックボックスではない)をクリックしてから、右側のペインで関連するJARを確認します。これにより、ライブラリがプロジェクトに(物理的に)配置されます。
  5. プロジェクトを右クリックし、[ビルドパス]-> [ビルドパスの構成]を選択し、[ライブラリ]タブ、[JARの追加...]の順にクリックして、libsディレクトリの新しいJARに移動して追加します。(ちなみに、これは新しいJARがAndroidで使用できるように変換される瞬間です。)

ノート

libがビルドパスにすでに含まれている場合は、手順5は必要ない場合があります。追加する前に、まずその存在を確認してください。

ここで行ったことは、2つのことを達成します。

  1. AndroidプロジェクトにDalvikで変換されたJARが含まれています。
  2. プロジェクトのソースコードを開発(つまりコンパイル)するときにサードパーティのクラスを見つけるために、Java定義をEclipseで使用できるようにします。
于 2010-09-04T16:09:35.897 に答える
20

サードパーティのjarファイルがプロジェクトの「libs」フォルダーにあり、アプリケーションをパッケージ化するときに.apkに配置されることを確認してください。jar内の何かがサポートされていない場合、デバイスでランタイムエラーが表示されることがありますが、それ以外は、これで大きな成功を収めています。

于 2010-09-04T15:51:25.567 に答える
5

ライブラリプロジェクトの設定

ライブラリプロジェクトは標準のAndroidプロジェクトであるため、新しいアプリケーションプロジェクトと同じ方法で新しいプロジェクトを作成できます。

ライブラリプロジェクトを作成するときは、図1に示すように、任意のアプリケーション名、パッケージを選択し、必要に応じて他のフィールドを設定できます。

次に、プロジェクトのプロパティを設定して、それがライブラリプロジェクトであることを示します。

パッケージエクスプローラーで、ライブラリプロジェクトを右クリックし、[プロパティ]を選択します。[プロパティ]ウィンドウで、左側の[Android]プロパティグループを選択し、右側のライブラリプロパティを見つけます。「ライブラリ」チェックボックスを選択し、「適用」をクリックします。[OK]をクリックして、[プロパティ]ウィンドウを閉じます。新しいプロジェクトは、ライブラリプロジェクトとしてマークされます。以下のセクションで説明するように、ソースコードとリソースの移動を開始できます。

于 2011-06-20T07:21:57.683 に答える
4

ADTバージョン22を使用している場合は、プロジェクトビルドパスの[注文とエクスポート]タブでAndroidの依存関係とAndroidのプライベートライブラリを確認する必要があります

于 2013-07-24T13:54:44.347 に答える
2

まず、プレフィックスがないという問題です。

サードパーティからのレイアウトファイルで何かを消費する場合は、そのプレフィックスも消費する必要があります。たとえば、以下のXML構造のいくつかの場所で発生する「droidfu:」のようなものです。

<com.github.droidfu.widgets.WebImageView android:id="@+id/webimage"
          android:layout_width="75dip"
          android:layout_height="75dip"
          android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

これはJARから出てきますが、新しい「xmlns:droidfu」も追加する必要があります

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

または、バインドされていないプレフィックスエラーが発生します。私にとって、これはサードパーティのライブラリのページから提供されたすべての例をコピーして貼り付けることができなかったためです。

于 2010-09-04T15:53:32.487 に答える
1

XMLの解析エラー:バインドされていないプレフィックス

リソース'/playteddy/res'は存在しません。

上記の2つのエラーが発生し、最終的に解決しました。

プロジェクトを右クリック->プロパティ->Javaビルドパス->googleadmobadsdk(選択して一番上に配置)、実行して問題を解決します。ランタイムエラーは解決しました。

于 2012-04-02T12:10:57.000 に答える
0

yourtワークスペースの外のフォルダにソースを置きます。プロジェクトエクスプローラーを右クリックし、[インポート...]を選択します。

プロジェクトをAndroidプロジェクトとしてワークスペースにインポートします。ビルドしてみて、ライブラリプロジェクトとしてマークされていることを確認してください。また、Google APIサポートを使用してビルドされていることを確認してください。そうでない場合、コンパイルエラーが発生します。

次に、プロジェクトエクスプローラーでメインプロジェクトを右クリックします。プロパティを選択してから、左側のAndroidを選択します。下のライブラリセクションで、[追加]をクリックします。

これで、mapview-balloonsライブラリをプロジェクトに追加できるようになります。

于 2012-12-05T16:33:34.523 に答える
0

Eclipseのビルドパスに移動し、[注文とエクスポート]をクリックして、ライブラリ/ jarを確認し、[上へ]ボタンをクリックしてリストの一番上に移動し、最初にコンパイルします。

于 2013-06-25T21:13:58.100 に答える