0

Mac OS X 10.7 上の Java、NetBeans 7.2 で Desmo-J シミュレーション サンプルを実行しようとしています。TimeSeries というクラスがインポートとして含まれています。

import desmoj.core.statistic.TimeSeries;

の関数シグネチャがあります

(Model, String, TimeInstant,TimeInstant, boolean)

メインのJavaファイルを正常にコンパイルできますが、実行/デバッグすると失敗し、教えてくれます

Exception in thread "main" java.lang.NoSuchMethodError: desmoj.core.statistic.TimeSeries.<init>(Ldesmoj/core/simulator/Model;Ljava/lang/String;Ldesmoj/core/simulator/TimeInstant;Ldesmoj/core/simulator/TimeInstant;Z)V

これは、私が行っている呼び出し(AFAIK)が正確に正しい型付きパラメーターを渡すという事実にもかかわらずです:

trucksArrived = new TimeSeries(this.getModel(), "arrived", new TimeInstant(0), new TimeInstant(1500), false);
trucksServiced = new TimeSeries(this.getModel(), "finished", new TimeInstant(0), new TimeInstant(1500), false);

なぜこれが起こっているのか、私は困惑しています。Java が実行時にメソッド呼び出しを認識できないのに、コンパイルでは正常に表示される理由についての手がかりはありますか? クラスパスに何か干渉している可能性があります。そこに別の TimeSeries がありますか (現在、ライブラリには何も表示されません)。例外メッセージ (関数シグネチャ付き) を正しく読みましたか? TimeSeries のいくつかのメソッドは非推奨です (ただし、私が使用しているものは除きます)。それはおそらく物事を妨げる可能性がありますか?

みんなありがとうピート

4

1 に答える 1

3

署名付きのコンストラクターを使用しようとしています:

TimeSeries(モデル、文字列、TimeInstant、TimeInstant、boolean)

これはこれと一致する必要があります。

コンパイルは成功しているが、プログラムでこのランタイム エラーが発生しているという事実は、アプリケーションが実行時に、コンパイルしたバージョンとは異なるバージョンのライブラリを使用していることを強く示唆しています。以下を確認してください。

  • ビルド クラスパスと実行クラスパスに同じ desmoj JAR があることを確認します。

  • いずれかのクラスパスに desmoj JAR の 2 つのバージョンを誤って含めていないことを確認してください。

于 2012-10-18T12:30:57.093 に答える