如何运行JShell文件?

use*_*370 9 java java-9 jshell

我想用JShell运行整个文件,如:

$ jshell my-jshell-skript.java
Run Code Online (Sandbox Code Playgroud)

例如,在哪里我的内容my-jshell-skript.java40 + 2;.

或者可选的可执行文件:

#!/usr/bin/jshell
40 + 2
Run Code Online (Sandbox Code Playgroud)

现在这可能吗?还是我仍然需要采用Java-Main-Class的旧方法?

编辑1:Windows问题

在Windows上,我仍然没有解决方案:

C:\JDKs\jdk9.0.0.0_x64\bin>type foo.jsh
1 + 1

C:\JDKs\jdk9.0.0.0_x64\bin>jshell.exe foo.jsh
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro

jshell> /exit
|  Goodbye

C:\JDKs\jdk9.0.0.0_x64\bin>
Run Code Online (Sandbox Code Playgroud)

JShell开始完全忽略我的文件.这是一个错误吗?

编辑2:Windows问题的解决方案

事实证明这是我的foo的内容.似乎1 + 1只能"在运行中"工作,而不是从文件中读取:

C:\JDKs\jdk9.0.0.0_x64\bin>type foo.jsh
System.out.println("foo");

C:\JDKs\jdk9.0.0.0_x64\bin>jshell.exe foo.jsh
foo
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro

jshell> /exit
|  Goodbye

C:\JDKs\jdk9.0.0.0_x64\bin>
Run Code Online (Sandbox Code Playgroud)

Nam*_*man 5

您可以创建一个以这些语句命名的Jshell脚本文件some.jsh,并在命令提示符下运行jshell,执行它:

jshell /path/to/some.jsh
Run Code Online (Sandbox Code Playgroud)

在MacOSX上,我会做类似的事情:

在此输入图像描述

  • @pnewhook您可以在脚本中使用`/ exit`. (2认同)

VHS*_*VHS 1

JShell并不意味着直接运行 Java 类。如果你想运行一个java类,你仍然需要用老方法—— java <your-class-name>.

文档中,

Java Shell 工具 (JShell) 是一个用于学习 Java 编程语言和构建 Java 代码原型的交互式工具。JShell 是一个读取-求值-打印循环 (REPL),它在输入声明、语句和表达式时对其求值并立即显示结果。

根据此引述,JShell 用于运行或尝试单个 Java 语句。在传统的java方式中,您必须编写一个完整的Java程序,然后才能运行它并查看结果。但是 JShell 允许您尝试 Java 语句,而无需构建完整的独立 java 应用程序。

所以对你的问题的简短回答是,不,你不能调用像jshell my-jshell-skript.java. 但是,您可以调用包含单独的 JShell 命令或 Java 语句的脚本文件。因此,如果您从 Java 程序中复制所有语句并将它们粘贴到 JShell 脚本中,则可以运行该脚本,如下所示:

% jshell my-jshell-skript.jsh

但这与运行独立的 java 应用程序并不完全相同。