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,布尔值)

这应该匹配这个

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

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

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

于 2012-10-18T12:30:57.093 回答