找不到Java方法,即使方法签名看起来没问题(desmo-j模拟)

时间:2012-10-18 12:14:45

标签: java signature

我正在尝试在Mac OS X 10.7上运行Java,NetBeans 7.2中的Desmo-J模拟示例。 包含一个名为TimeSeries的类作为导入,即

import desmoj.core.statistic.TimeSeries;

它的函数签名为

(Model, String, TimeInstant,TimeInstant, boolean)

我可以编译我的主要java文件OK,但是当运行/调试时,它失败了,告诉我

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在那里(目前在libs中看不到任何东西)?我是否正确阅读了异常消息(带有其功能签名)? TimeSeries中的一些方法已被弃用(尽管不是我正在使用的方法)。这可能会干扰事情吗?

谢谢你们 皮特

1 个答案:

答案 0 :(得分:2)

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

  

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

应与this one匹配。

您的编译成功但程序提供此运行时错误的事实强烈建议您的应用程序在运行时使用的库版本与您编译的版本不同。请检查以下内容:

  • 检查构建类路径和运行类路径上是否有相同的desmoj JAR。

  • 检查您是否在两个类路径中不小心包含了两个版本的desmoj JAR。