1

私はこのライブラリを使用しています:CHARTS4J VERSION 1.3

このデモクラス:私のクラスJavaプロジェクト(Eclipseの下)で作業していることを確認してください。しかし、私のAndroidプロジェクトでは、クラスが使用しようとしている最初のオブジェクトに対して「java.lang. NoClassDefFoundError : com.googlecode.charts4j.Data」というエラーがあります(この行: Plot plot = Plots.newPlot(Data. newData(0, 66.6, 33.3, 100)); )

プロジェクトの「ビルドパス」にライブラリがあり、それがクラスパスにあることを確認しました:

classpathentry kind="lib" path="D:/WorkspaceAndroid/myproject/charts4j-1.3.jar"

道に迷いました。なぜ実行時に動作しないのですか??

ありがとうございます。

4

2 に答える 2

1

chart4jであなたが抱えている問題がよくわかりません。しかし、私は Android でチャートも試しました。androidplot.com は使いやすく、十分に文書化されたライブラリであり、プログラミング中に頭を悩ませることはありませんでした。

于 2012-05-31T08:59:51.140 に答える
0

ここでも同じ問題ですが、Eclipse プラグインを構築しています。

JavaのNoClassDefFoundErrorの理由は何ですか?

Java のNoClassDefFoundErrorは、Java 仮想マシンが、コンパイル時に使用可能だった特定のクラスを実行時に見つけられない場合に発生します。たとえば、クラスからのメソッド呼び出しまたはクラスの静的メンバーへのアクセスがあり、そのクラスが実行時に使用できない場合、JVM は NoClassDefFoundError をスローします。これは、実行時にのみクラスをロードしようとしたときに発生し、コンパイル時ではなく実行時に名前が提供された ClassNotFoundException とは異なることを理解することが重要です。多くの Java 開発者は、この 2 つのエラーを混同して混乱します。

つまり、コンパイル時にクラスが存在したが、実行時にJavaクラスパスで使用できない場合、NoClassDefFoundErrorが発生します。

Java での java.lang.NoClassDefFoundError と ClassNotFoundException の違い

何度もjava.lang.ClassNotFoundExceptionjava.lang.NoClassDefFoundErrorを混同しましたが、どちらも Java クラスパスに関連しており、互いに完全に異なっています。ClassNotFoundExceptionは、JVM が実行時にクラスを動的にロードしようとするときに発生します。つまり、実行時にクラスの名前を指定すると、JVM はそれをロードしようとし、そのクラスがクラスパスに見つからない場合はjava.lang.ClassNotFoundExceptionをスローします。. NoClassDefFoundError の場合、コンパイル時に問題のあるクラスが存在していたため、プログラムは正常にコンパイルされましたが、何らかの理由で実行時に使用できませんでした。私の意見では、NoClassDefFoundError は ClassNotFoundException よりも解決が簡単です。これは、ビルド時に Class が存在していたことがわかっているためですが、環境に完全に依存します。対応する ClassLoader に表示されます。

詳細: http://javarevisited.blogspot.com.es/2011/06/noclassdeffounderror-exception-in.html

Eclipse プラグインのソリューション

NoClassDefFoundErrorを取得すると、クラスパスが少なくとも 1 か所で定義されていません。Eclipse プラグインでは、これらは外部ライブラリのクラスパスを定義する必要があるすべての場所です。

  1. プロジェクトのプロパティ: プロジェクトを右クリックし、プロパティを選択します。次に、Java ビルド パス、次にライブラリです。最後に、ライブラリの jar を追加します (外部またはプロジェクトのフォルダー内)。
  2. plugin.xml ファイル内: plugin.xml ファイルを開き、Runtime タブをクリックします。ライブラリを Classpath セクションに追加します。[ビルド] タブをクリックし、追加のクラスパス エントリにライブラリを追加します。

それだけです。

この種のエラーは不適切なクラスパス定義から発生するため、Android プロジェクトの場合も同様の解決策になるはずです。

于 2013-08-19T17:19:40.120 に答える