如何运行JShell文件?
我想运行与JShell整个文件,如:如何运行JShell文件?
$ jshell my-jshell-skript.java
例如在哪里我的my-jshell-skript.java
的内容是40 + 2;
。
或可选择地像一个可执行文件:
#!/usr/bin/jshell
40 + 2
现在这是可能的,或者我还是要在一个Java主类的老路上?
编辑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的问题
事实证明,它是我的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>
可以通过管道将字符串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”。
这不适用于Cygwin: ''' peter @ AB4745 /cygdrive/c/JDKs/jdk9.0.0.0_x64/bin $ echo 2 + 3 | jshell.exe |欢迎来到JShell - 版本9 |对于介绍类型:/帮助简介 jshell> ''' – user470370
您可以创建一个Jshell script文件名为some.jsh
这些发言和从运行jshell
命令提示符下,执行它: -
jshell /path/to/some.jsh
在一个MacOSX的,我会做这样的事情:
脚本完成后有没有办法抑制进入交互模式? – pnewhook
@pnewhook你可以在脚本中使用'/ exit'。 – nullpointer
JShell
并不意味着直接运行Java类。如果你想运行一个java类,你仍然需要以旧的方式去做 - java <your-class-name>
。
从docs,
Java的壳牌工具(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应用程序。
启动jshell
在concise
反馈模式和过滤所需要的内容 -
$echo '40 + 2' | jshell --feedback concise | sed -n '2p' |sed -En 's/[^>]*>(.+)/\1/gp'
输出:42
更多细节这里 - How to execute java jshell command as inline from shell or windows commandLine
人,这是很讨厌。所有对jshell的炒作和它不能运行'jshell helloworld.java'。 –