2013-12-17 73 views
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

回答