2011-10-05 13 views
8

を構築していないとき、私は次のエラーを取得する(。javaの*またはjavaxの*。):無分別または誤った使用方法私は私のプロジェクトをきれいにするとコアライブラリ

[2011-10-05 13:47:53 - The Basics] Dx 
trouble processing "java/nio/CharBuffer.class": 

Ill-advised or mistaken usage of a core class (java.* or javax.*) 
when not building a core library. 

これがしばしばありますIDEを使用している場合( Eclipseなど)、アプリケーションのプロジェクトにコアライブラリファイル が誤って挿入されることがありました。 コアクラスを意図的に定義していないと確信できる場合は、 が何が起こっているのかが最もよく分かります。

しかし、実際には、 という名前の空間(たとえば、Android以外の仮想マシンプロジェクトの など)でクラスを定義しようとしている可能性があります。これはほとんど がうまく動作しません。少なくとも、今後のバージョンのプラットフォームとのアプリの互換性は、 の危険にさらされます。 それはしばしば疑わしい合法性でもあります。アプリケーションのコンパイルとは反対に、完全な仮想マシンに 分布の作成の一環としてのみ 適切です - - あなたが本当にコアライブラリを構築する場合

その後、 「--core-ライブラリ」を使用このエラーメッセージを抑制するオプション。

"--core-library"を使用しても、実際には アプリケーションをビルドしている場合は、アプリケーション がまだビルドまたは実行できないことに注意してください。たとえば、 システムがアップグレードされた後で、お客様の アプリケーションが機能しなくなることを発見した怒っている顧客のために、 を用意してください。あなたはこの問題のせいになるでしょう。

コアパッケージ内にあるコードを正当に使用している場合は、 コードを再パッケージするのが一番簡単な代替方法です。つまり、問題のクラスを独自のパッケージ名前空間 に移動します。これは、彼らがコアシステムクラスとの衝突で決して になることを意味します。 JarJarはこの努力の中で を助けるツールです。あなたがこれを行うことができないと分かった場合、あなたの道が最終的に になることを示す は、痛み、苦しみ、悲しみ、嘆きにつながります。

[2011-10-05 13:47:53 - The Basics] Dx 1 error; aborting 
[2011-10-05 13:47:53 - The Basics] Conversion to Dalvik format failed with error 1 

答えて

1

IDEが正しく構成されていません。スクリプトまたはIDEがrt.jarまたはandroid.jardxに渡していないことを確認してください。

4

この問題がありました。私はMavenを使ってAndroidプロジェクトを構築しています。私の問題は、アンドロイドジャーに依存する私の依存関係の1つによって引き起こされました。私はその依存からアンドロイドを除外するために私のPOMを更新し、それは私のためにそれを解決しました。

<dependency> 
     <groupId>org.reassembler</groupId> 
     <artifactId>synth-android</artifactId> 
     <version>2.5.8</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>junit</artifactId> 
       <groupId>junit</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>android</artifactId> 
       <groupId>android</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

これが誰かを助けてくれることを願っています。何が起こっているか把握するのに時間がかかりました。

+0

この回答をお寄せいただきありがとうございます... JUnitは私にエラーの原因となっていました。 – tantalum

2

これを遭遇した可能性のある人のために、android.jarのような古いライブラリを含めるとこの問題が発生する可能性があります。ビルドパスから.jarファイルを削除すると、コンパイルが可能になります。それ以外の場合は、エラーメッセージに記載されている「jarjar」を使用して.jarファイルを別のパッケージに移動することができます。

+0

一言で言えば、これは正しいです。しかし、あなたは余分なステップをいくつか取らなければならないかもしれません。更新されました! :) –

0

Androidスタジオでは、libフォルダにjavaとjavax jarファイルが含まれていましたが、それに関連する依存関係がありました(アプリレベルではbuild.gradle)。私はそれらをコメントアウトした。

//compile files('libs/ K java-rt-jar-stubs-1.5.0.jar') 
//compile 'javax.annotation:jsr250-api:1.0' 
//compile files('libs/javax. annotation.jar') 

次に、私はプロジェクトビューに行き、jarファイルを削除しました。パージしなければならなかったjava.awt.geomのいくつかのレガシーインスタンスがありましたが、プロジェクトを再構築してからは大丈夫でした。

関連する問題