scijava-common icon indicating copy to clipboard operation
scijava-common copied to clipboard

Improve ScriptProcessor error handling

Open ctrueden opened this issue 8 years ago • 0 comments

Try running the following example Java command in the Script Editor:

@Plugin(type = org.scijava.command.Command.class)
public class MyCommand implements org.scijava.command.Command {
  public void run() { }
}

It produces this exception:

[ERROR] Module threw exception
java.lang.IllegalArgumentException: Unsupported binary operator: .
	at org.scijava.parse.eval.AbstractStackEvaluator.die(AbstractStackEvaluator.java:108)
	at org.scijava.parse.eval.AbstractStackEvaluator.evaluate(AbstractStackEvaluator.java:76)
	at org.scijava.parse.eval.AbstractEvaluator.evaluate(AbstractEvaluator.java:87)
	at org.scijava.parse.DefaultParseService$ItemsList.parseItems(DefaultParseService.java:104)
	at org.scijava.parse.DefaultParseService$ItemsList.<init>(DefaultParseService.java:72)
	at org.scijava.parse.DefaultParseService.parse(DefaultParseService.java:58)
	at org.scijava.script.process.ParameterScriptProcessor.parseAttrs(ParameterScriptProcessor.java:221)
	at org.scijava.script.process.ParameterScriptProcessor.parseParam(ParameterScriptProcessor.java:178)
	at org.scijava.script.process.ParameterScriptProcessor.process(ParameterScriptProcessor.java:165)
	at org.scijava.script.process.ParameterScriptProcessor.process(ParameterScriptProcessor.java:144)
	at org.scijava.script.process.ScriptProcessorService.process(ScriptProcessorService.java:79)
	at org.scijava.script.ScriptInfo.parseParameters(ScriptInfo.java:291)
	at org.scijava.module.AbstractModuleInfo.initParameters(AbstractModuleInfo.java:191)
	at org.scijava.module.AbstractModuleInfo.inputList(AbstractModuleInfo.java:153)
	at org.scijava.module.AbstractModuleInfo.inputs(AbstractModuleInfo.java:95)
	at org.scijava.module.process.GatewayPreprocessor.process(GatewayPreprocessor.java:66)
	at org.scijava.module.ModuleRunner.preProcess(ModuleRunner.java:104)
	at org.scijava.module.ModuleRunner.run(ModuleRunner.java:156)
	at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
	at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
	at org.scijava.thread.DefaultThreadService$3.call(DefaultThreadService.java:237)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:748)
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Unsupported binary operator: .
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at org.scijava.ui.swing.script.TextEditor.evalScript(TextEditor.java:2348)
	at org.scijava.ui.swing.script.TextEditor.access$1000(TextEditor.java:149)
	at org.scijava.ui.swing.script.TextEditor$22.execute(TextEditor.java:2015)
	at org.scijava.ui.swing.script.TextEditor$Executer$1.run(TextEditor.java:1751)
Caused by: java.lang.IllegalArgumentException: Unsupported binary operator: .
	at org.scijava.parse.eval.AbstractStackEvaluator.die(AbstractStackEvaluator.java:108)
	at org.scijava.parse.eval.AbstractStackEvaluator.evaluate(AbstractStackEvaluator.java:76)
	at org.scijava.parse.eval.AbstractEvaluator.evaluate(AbstractEvaluator.java:87)
	at org.scijava.parse.DefaultParseService$ItemsList.parseItems(DefaultParseService.java:104)
	at org.scijava.parse.DefaultParseService$ItemsList.<init>(DefaultParseService.java:72)
	at org.scijava.parse.DefaultParseService.parse(DefaultParseService.java:58)
	at org.scijava.script.process.ParameterScriptProcessor.parseAttrs(ParameterScriptProcessor.java:221)
	at org.scijava.script.process.ParameterScriptProcessor.parseParam(ParameterScriptProcessor.java:178)
	at org.scijava.script.process.ParameterScriptProcessor.process(ParameterScriptProcessor.java:165)
	at org.scijava.script.process.ParameterScriptProcessor.process(ParameterScriptProcessor.java:144)
	at org.scijava.script.process.ScriptProcessorService.process(ScriptProcessorService.java:79)
	at org.scijava.script.ScriptInfo.parseParameters(ScriptInfo.java:291)
	at org.scijava.module.AbstractModuleInfo.initParameters(AbstractModuleInfo.java:191)
	at org.scijava.module.AbstractModuleInfo.inputList(AbstractModuleInfo.java:153)
	at org.scijava.module.AbstractModuleInfo.inputs(AbstractModuleInfo.java:95)
	at org.scijava.module.process.GatewayPreprocessor.process(GatewayPreprocessor.java:66)
	at org.scijava.module.ModuleRunner.preProcess(ModuleRunner.java:104)
	at org.scijava.module.ModuleRunner.run(ModuleRunner.java:156)
	at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
	at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
	at org.scijava.thread.DefaultThreadService$3.call(DefaultThreadService.java:237)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:748)

ctrueden avatar Jun 05 '17 15:06 ctrueden