首页 > 解决方案 > 如何在jupyter上编译和运行java程序

问题描述

在此处输入图像描述 我正在尝试在 Jupyter 上运行一个 java 程序,但我看到了 mutliple UndefinedMagicExceptions。

使用 java 内核IJava版本1.3.0,并尝试运行以下单元:

%%file day.java
import java.util.Calendar;

class day {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int day = cal.get(Calendar.DATE);
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        int minute = cal.get(Calendar.MINUTE);
        System.out.println(year + "/" + month + "/" + day + " " + hour + ":" + minute);
    }
}

但不创建day.java文件并引发错误:

io.github.spencerpark.jupyter.kernel.magic.registry.UndefinedMagicException: Undefined cell magic 'file'
at io.github.spencerpark.jupyter.kernel.magic.registry.Magics.applyCellMagic(Magics.java:34)
at io.github.spencerpark.ijava.runtime.Magics.cellMagic(Magics.java:31)
at .(#12:1)

笔记本怎么修?

标签: javapythonjupyter-notebook

解决方案


由于您使用的是 java 内核,因此无需使用 shell 命令编译和运行程序。而是直接将day#main方法的内容放在一个单元格中!

在此处输入图像描述

就像 Python 内核一样,状态保存在单元之间。这意味着在评估上述一个之后,您可以在后续单元格中使用变量year、等。month也像在 Python 内核中一样,您可以在最后一行写一个表达式,它将成为Out[*]单元格的输出 ( )。

在此处输入图像描述

最后,为了完整起见,您最初使用%%fileand%%shell单元魔术的方法是使用 Python 内核在系统上运行 java 时流行的方法。即,如果将笔记本的内核切换到 IPython,您的原始笔记本会正常工作。


推荐阅读