诊断netlogo扩展命令错误

诊断netlogo扩展命令错误,netlogo,Netlogo,当我尝试执行第一个n整数扩展示例时: 显示噪声:第一个n整数5 我在控制台或“代码”选项卡中收到错误“error:Expected command.”。 我基本上是照样复制和粘贴类示例,只是重命名它们并将它们放在不同的包中。我希望这个错误更具描述性,因为我怀疑我在某处犯了一个简单的错误 我在x64 Windows 7机器上使用的是没有JRE的5.0.4和1.7.0_45 JRE/JDK 我的manifest.txt文件,在版本行末尾有完全限定的类管理器和crlf-- 这是我的班级经理: pack

当我尝试执行第一个n整数扩展示例时:

显示噪声:第一个n整数5

我在控制台或“代码”选项卡中收到错误“error:Expected command.”。 我基本上是照样复制和粘贴类示例,只是重命名它们并将它们放在不同的包中。我希望这个错误更具描述性,因为我怀疑我在某处犯了一个简单的错误

我在x64 Windows 7机器上使用的是没有JRE的5.0.4和1.7.0_45 JRE/JDK

我的manifest.txt文件,在版本行末尾有完全限定的类管理器和crlf--

这是我的班级经理:

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();
package org.xyz.extensions;
导入org.nlogo.api.*;
公共类NoiseGenerator扩展DefaultReporter{
公共语法getSyntax(){
return Syntax.reporterSyntax(
新的int[]{Syntax.NumberType()},Syntax.ListType());
}
公共对象报告(参数args[],上下文)引发ExtensionException{
//为结果创建NetLogo列表
LogoListBuilder list=新LogoListBuilder();
int n;
//使用来自的typesafe帮助程序方法
//org.nlogo.api.Argument访问参数
试一试{
n=args[0]。getIntValue();
}
捕获(logoE异常){
抛出新的ExtensionException(例如getMessage());
}
if(n<0){
//向建模器发出NetLogo运行时错误信号
抛出新的ExtensionException
(“输入必须为正”);
}
//填充列表。请注意,我们使用了双对象;NetLogo
//数字总是双倍的
对于(int i=0;i
} }

谢谢你的帮助


AJB

在这里询问并回答:

答案是将
getSynax
的拼写改为
getSyntax

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());
  }
}
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();