繁体   English   中英

如何在 JShell 中加载外部文件?

[英]How do you load an external file in JShell?

JShell 是 Java 的交互式 REPL 命令行。

如果我有一个带有一些方法的 Java 类,我想在 .java 文件中以交互方式使用这些方法,我该如何加载该文件?

假设我有文件HelloWorld.java

class HelloWorld
{
    public static void main(String[] argsv)
    {
    }

    public static void doStuff()
    {
        System.out.println("Hello world");
    }
}

我想加载 JShell 并能够从命令行调用doStuff()方法。 我怎么做?

$ JShell HelloWorld.java的文件名启动JShell不起作用。 也不是类文件。 我仍然收到错误cannot find symbol | symbol: variable HelloWorld cannot find symbol | symbol: variable HelloWorld来自 JShell 的cannot find symbol | symbol: variable HelloWorld 使用/open <filename>命令给出了相同的结果。

无法重现:问题中描述的问题(“无效”)不可重现,因为它可以正常工作。

这是一个包含工作步骤的最小、可重现的示例,在 Java 9 和 Java 14 上进行测试。

首先,验证Java源文件的内容:

C:\Temp>type HelloWorld.java
class HelloWorld
{
    public static void main(String[] argsv)
    {
    }

    public static void doStuff()
    {
        System.out.println("Hello world");
    }
}

我们可以使用 Java 9 中的 JShell 运行它,使用命令行加载文件:

C:\Temp>jshell HelloWorld.java
|  Welcome to JShell -- Version 9.0.4
|  For an introduction type: /help intro

jshell> HelloWorld.doStuff()
Hello world

可以看出,Java 源文件加载得很好,并且调用static方法没有问题。

我们还可以使用 Java 14 中的 JShell 运行它,使用/open命令加载文件:

C:\Temp>jshell
|  Welcome to JShell -- Version 14
|  For an introduction type: /help intro

jshell> HelloWorld.doStuff()
|  Error:
|  cannot find symbol
|    symbol:   variable HelloWorld
|  HelloWorld.doStuff()
|  ^--------^

jshell> /open HelloWorld.java

jshell> HelloWorld.doStuff()
Hello world

我们首先尝试在/open命令之前运行,以证明HelloWorld不存在,即证明是/open命令声明了类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM