[英]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.