【问题标题】:Error running a simple script in a jupyter notebook with SciJava使用 SciJava 在 jupyter notebook 中运行简单脚本时出错
【发布时间】:2019-02-07 17:32:06
【问题描述】:

我是一个完整的初学者,所以请耐心等待。我正在尝试运行此脚本:

import java.util.Scanner;

public class Echo {

    public static void main(String[] args) {
        String line;
        Scanner in = new Scanner(System.in); 

        System.out.print("Type something: ");
        line = in.nextLine();
        System.out.println("You said: " + line);

    }
} 

在我的 Jupyter 内核中使用 SciJava,但我收到此错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script6.groovy: 7: expecting '}', found 'in' @ line 7, column 17.
           Scanner in = new Scanner(System.in); 
                   ^

1 error

    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
    at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
    at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:350)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:144)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:110)
    at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:234)
    at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:168)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:250)
    at org.scijava.plugins.scripting.groovy.GroovyScriptEngine.getScriptClass(GroovyScriptEngine.java:319)
    at org.scijava.plugins.scripting.groovy.GroovyScriptEngine.eval(GroovyScriptEngine.java:122)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
    at org.scijava.script.ScriptModule.run(ScriptModule.java:160)
    at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
    at org.scijava.jupyter.kernel.evaluator.Worker.run(Worker.java:108)
    at org.scijava.thread.DefaultThreadService$2.run(DefaultThreadService.java:221)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    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:745)

我尝试通过我的命令终端中的脚本运行该程序,并且它有效。补充一点,我之前在这个内核中运行过其他简单的脚本,但由于某种原因,这个脚本不起作用。

如果需要,请参考随附的屏幕截图。

我在 macOS Mojave 上。

提前感谢您!

【问题讨论】:

  • 我很抱歉我没有答案,但我有同样的问题,并且已经用尽所有方法试图找到解决方案。没有这个,Scijava 似乎有点残废?也无法让一个简单的数组工作。任何与 scijava 相关的人都没有回答,甚至在 Anaconda...crickets 上发布了这个问题。只需将我的声音添加到它出现的回声中。
  • 不用担心,感谢您提出!

标签: java kernel jupyter-notebook jupyter sci-java


【解决方案1】:

SciJava 是一个多语言内核,这意味着它支持多种不同的语言。

链接到supported languages 的自述文件和笔记本表明支持java,但默认为Groovy

一些支持的语言是 Groovy(默认)、Python、Beanshell、Clojure、Java、Javascript、Ruby 和 Scala。

虽然https://github.com/scijava/scijava-jupyter-kernel/issues/80 建议使用java,但它无法运行。

Groovy 不是 java。它与您找到的but there are differences 相当兼容。 in 是 groovy 中的关键字,不能用作变量名(见第 13 节)。

以下是有效 groovy 中的相同程序:

import java.util.Scanner;

public class Echo {

    public static void main(String[] args) {
        String line;
        Scanner input = new Scanner(System.in); 

        System.out.print("Type something: ");
        line = input.nextLine();
        System.out.println("You said: " + line);

    }
} 

虽然这会导致下一个问题,即不支持标准输入 https://github.com/scijava/scijava-jupyter-kernel/issues/96,但希望到目前为止的答案能够解开您最初收到的错误消息。

【讨论】:

  • 感谢您的回答!
猜你喜欢
  • 2020-06-02
  • 2019-11-21
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 2021-05-31
相关资源
最近更新 更多