scijava-common
scijava-common copied to clipboard
Improve ScriptProcessor error handling
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)