0
当试图执行所述第一正整数的扩展例如:诊断的NetLogo扩展命令错误
显示噪声:第一正整数5
我收到错误“ERROR:预期命令”在控制台或代码选项卡中。 我主要是复制和粘贴类示例,只是重命名并将它们放在不同的包中。我希望这个错误更具描述性,因为我怀疑我在某处发生了一个简单的错误。
我在没有JRE的情况下使用5.0.4,而在x64 Windows 7机器上使用的是JRE/JDK 1.7.0_45。
具有完全限定类经理和CRLF在该版本的结束我的manifest.txt文件line--
Manifest-Version: 1.0
Extension-Name: noise
Class-Manager: org.xyz.extensions.NoiseExtension
NetLogo-Extension-API-Version: 5.0 <--there is a crlf here
罐子是一个子文件夹和我的模型文件
test/
test.nlogo
noise/
noise.jar
这是我的类经理:
package org.xyz.extensions;
import org.nlogo.api.*;
public class NoiseExtension extends DefaultClassManager {
public void load(PrimitiveManager primitiveManager) {
primitiveManager.addPrimitive(
"first-n-integers", new org.xyz.extensions.NoiseGenerator());
}
}
这是NoiseGenerator文件:
package org.xyz.extensions;
import org.nlogo.api.*;
public class NoiseGenerator extends DefaultReporter {
public Syntax getSyntax() {
return Syntax.reporterSyntax(
new int[] {Syntax.NumberType()}, Syntax.ListType());
}
public Object report(Argument args[], Context context) throws ExtensionException {
// create a NetLogo list for the result
LogoListBuilder list = new LogoListBuilder();
int n ;
// use typesafe helper method from
// org.nlogo.api.Argument to access argument
try {
n = args[0].getIntValue();
}
catch(LogoException e) {
throw new ExtensionException(e.getMessage()) ;
}
if (n < 0) {
// signals a NetLogo runtime error to the modeler
throw new ExtensionException
("input must be positive");
}
// populate the list. note that we use Double objects; NetLogo
// numbers are always Doubles
for (int i = 0; i < n; i++) {
list.add(Double.valueOf(i));
}
return list.toLogoList();
}}
感谢您的帮助。
AJB
更正的方法名称和代码现在可用。 – user3113257