Когда я пытаюсь выполнить пример расширения первых n целых чисел:
показать шум: первые n целых чисел 5
Я получаю сообщение об ошибке «ОШИБКА: ожидаемая команда» в консоли или на вкладке кода. В основном я копировал и вставлял примеры классов как есть, просто переименовывая их и помещая в другой пакет. Я бы хотел, чтобы ошибка была немного более описательной, так как я подозреваю, что где-то делаю простую ошибку.
Я использую 5.0.4 без JRE и 1.7.0_45 JRE/JDK на машине x64 Windows 7.
Мой файл manifest.txt с полноценным менеджером классов и crlf в конце строки версии:
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();
} }
Спасибо за любую помощь.
АДЖБ