我正在尝试在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中的某些方法(尽管不是我正在使用的方法)。可能会干扰事物吗?

谢谢你们
皮特

最佳答案

您正在尝试使用带有签名的构造函数:


  TimeSeries(Model,String,TimeInstant,TimeInstant,boolean)


应该匹配this one

编译成功但程序出现运行时错误的事实强烈表明,您的应用程序在运行时使用的库版本与编译时使用的库版本不同。检查以下内容:


检查您的构建类路径和运行类路径上是否具有相同的desmoj JAR。
检查您是否在两个类路径中没有意外包含desmoj JAR的两个版本。

关于java - 找不到Java方法,即使方法签名看起来不错(desmo-j模拟),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12954389/

10-14 17:55
查看更多