我想使用JShell运行整个文件,如下所示:
$ jshell my-jshell-skript.java例如,我的my-jshell-skript.java的内容是40 + 2;。
或者是像这样的可执行文件:
#!/usr/bin/jshell
40 + 2这是现在的可能吗,还是我还必须采用以前的方式,而不是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>JShell开始完全忽略我的文件。是虫子吗?
编辑2: Windows解决方案-问题
原来这是我的口香糖的内容。似乎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>发布于 2017-09-26 14:27:08
JShell并不意味着直接运行一个Java类。如果您想要运行一个java类,仍然需要以旧的方式运行它-- java <your-class-name>。
从文档,
JShell工具(JShell,JShell)是学习Java编程语言和原型Java代码的交互式工具。JShell是一个读-评估-打印循环(REPL),它在输入声明、语句和表达式时对它们进行评估,并立即显示结果。
根据这句话,JShell是用来运行或尝试单个Java语句的。按照传统的java方式,您必须编写完整的Java程序,然后才能运行它并查看结果。但是JShell允许您尝试Java语句,而无需构建完整的独立java应用程序。
因此,对您的问题的简短回答是,不能调用独立的java应用程序,比如jshell my-jshell-skript.java。但是,您可以调用包含单个JShell命令或Java语句的脚本文件。因此,如果您从Java程序中复制所有语句并将它们粘贴到JShell脚本中,则可以运行以下脚本:
% jshell my-jshell-skript.jsh
但这与运行独立的java应用程序并不完全相同。
发布于 2017-09-26 13:09:37
您可以使用这些语句创建一个名为Jshell脚本的some.jsh文件,并从运行jshell的位置在命令提示符下执行它:-
jshell /path/to/some.jsh在MacOSX上,我会做这样的事情:

发布于 2017-09-26 12:29:22
您可以将字符串传输到JShell:
echo 1 + 2 | jshell示例:
:/# echo 1 + 2 | jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell> 1 + 2
$1 ==> 3
:/#或者,从文件中:
cat myfile | jshell其中myfile包含行"1 + 2“。
https://stackoverflow.com/questions/46426526
复制相似问题