7

これは、新しい SDK for Android で最近発生した問題です。

現在、Android SDK は外部 jar を apk パッケージにインポートするときに ANT 規則を使用します。外部 jar は「lib」フォルダーにある必要があり、SDK はそのフォルダーから jar をエクスポートします。

私の問題は、jar を追加してプロジェクトを実行すると、次のメッセージが表示されることです。

「javax/transaction/HeuristicCommitException.class」の処理で問題が発生しました:

コア ライブラリを構築しない場合のコア クラス (java.* または javax.*) の不適切な使用または誤った使用。

これは多くの場合、IDE (Eclipse など) を使用しているときに、コア ライブラリ ファイルをアプリケーションのプロジェクトに誤って含めたことが原因です。コア クラスを意図的に定義していないことが確実な場合は、これが何が起こっているかの最も可能性の高い説明です。

ただし、実際にはコア名前空間でクラスを定義しようとしている可能性があります。そのソースは、たとえば Android 以外の仮想マシン プロジェクトから取得した可能性があります。これは確実に機能しません。少なくとも、アプリとプラットフォームの将来のバージョンとの互換性が損なわれます。また、合法性が疑わしいこともよくあります。

アプリケーションをコンパイルするのではなく、完全な仮想マシン ディストリビューションを作成する一部としてのみ適切なコア ライブラリをビルドする場合は、「--core-library」オプションを使用してこのエラー メッセージを抑制します。

「--core-library」を使用しても実際にはアプリケーションをビルドしている場合は、アプリケーションがまだビルドまたは実行に失敗する可能性があることに注意してください。たとえば、オペレーティング システムをアップグレードすると、アプリケーションが機能しなくなったことに気付いた怒っている顧客に備えてください。この問題の責任はあなたにあります。

たまたまコア パッケージにあるコードを合法的に使用している場合、最も簡単で安全な代替手段は、そのコードを再パッケージ化することです。つまり、問題のクラスを独自のパッケージ名前空間に移動します。これは、コア システム クラスと競合しないことを意味します。JarJar は、この取り組みに役立つツールです。これができないとわかった場合、それはあなたがたどっている道が最終的に痛み、苦しみ、悲しみ、嘆きにつながることを示しています.

このメッセージについてここや他のフォーラムで読んだことがありますが、一部の人々は Android.jar が問題であると言っているので、削除すると修正されます。

しかし、削除できないAndroidライブラリを除いて、そのAndroid.jarが見つかりません。

私のアプリケーションが非常にうまく機能していたので、Androidへのライブラリのインポートに関するこの問題は私を怒らせています。

4

3 に答える 3

1

プロジェクトをクリーンアップして再構築しようとすると...それはあなたを助けるかもしれません...それは私を助けるので...私は私の新しいSDKでも同じ問題を抱えていました...

于 2012-04-14T20:48:30.593 に答える
1

私も最初にアップデートしたときに多くの問題を見ましたが、最終的には機能するようになりました. 最終的に私と友人のために働いたものに基づいたいくつかの提案:

プロジェクトのベースディレクトリの「libs」フォルダに外部jarがあることを確認してください(「lib」ではなく「s」に注意してください)。変更を加えた場合は、必ずプロジェクトを更新してクリーンアップしてください (自動的にビルドするように設定されていない場合は、再ビルドしてください)。

プロジェクト プロパティの [Java Build Path] > [Libraries] タブで、Android XXX および Android Dependencies ノード以外のすべてを削除します。繰り返しますが、変更を加えた場合は、必ずプロジェクトを更新してクリーンアップしてください (自動的にビルドするように設定されていない場合は、再ビルドしてください)。

プロジェクトとワークスペースで使用するすべてのライブラリ プロジェクトに対してこれを行っても問題が解決しない場合は、すべての Android ライブラリ プロジェクト (プロジェクト プロパティ > Android から) と Java ビルド パス (Android を含む) からすべてのライブラリを削除してみてください。今回は XXX と Android の依存関係) をそれぞれ削除し、クリーンアップしてから、Android のバージョンを変更/適用/元に戻して再構築を強制します。(これは、ベース ライブラリ プロジェクトから開始する各プロジェクトに対して行います。他のプロジェクトがエラーなしでビルドされたら、それらを他のプロジェクトに追加するだけです)。

それが役立つことを願っています。

于 2012-04-14T22:07:19.447 に答える