相关疑难解决方法(0)

如何用jshell执行java脚本?

鉴于Java 9已经出现在我们身上,我们终于可以拥有一个java REPL了,jshell我希望有一种方法可以将一个shebang添加到脚本中并对其进行jshell解释.

我尝试创建test.jsh:

#!/usr/bin/env jshell -s
System.out.println("Hello World")
/exit
Run Code Online (Sandbox Code Playgroud)

然而,这给了:

? ./test.jsh
|  Error:
|  illegal character: '#'
|  #!/usr/bin/env jshell -s
|  ^
|  Error:
|  illegal start of expression
|  #!/usr/bin/env jshell -s
|    ^
Hello World
Run Code Online (Sandbox Code Playgroud)

事实证明,在OpenJDK https://bugs.openjdk.java.net/browse/JDK-8167440中有一个增强请求.

有没有其他方法可以做到这一点?

java shebang java-9 jshell

20
推荐指数
2
解决办法
3045
查看次数

jshell中J和R标志的确切含义/目的是什么?

从帮助信息:

-J<flag>              Pass <flag> directly to the runtime system.
                      Use one -J for each runtime flag or flag argument
-R<flag>              Pass <flag> to the remote runtime system.
                      Use one -R for each remote flag or flag argument
Run Code Online (Sandbox Code Playgroud)

我在工具文档jshell用户指南中都找不到解释.

另外,什么是jshell上下文中的"远程运行时系统"?

runtime java-9 jshell

7
推荐指数
1
解决办法
271
查看次数

如何在jshell脚本中获取用户输入?

问题:

如何在jshell 脚本中获取用户输入?或者我做错了什么?

注意:不是在寻找如何将参数传递给 jshell script

例子:

例如脚本hello.java

Scanner in = new Scanner(System.in);

System.out.print("Enter number n1: ");
int n1 = in.nextInt();
System.out.print("Enter number n2: ");
int n2 = in.nextInt();

System.out.println("n1 + n2 = "+ (n1 +n2));

/exit
Run Code Online (Sandbox Code Playgroud)

如果我在 jshell 中逐行输入它可以工作,但然后我运行jshell hello.java它就不行了。投掷java.util.NoSuchElementException

我得到的输出:

@myMint ~/Java $ jshell hello.java 
Enter number n1: |  java.util.NoSuchElementException thrown: 
|        at Scanner.throwFor (Scanner.java:858)
|        at Scanner.next (Scanner.java:1497)
|        at Scanner.nextInt (Scanner.java:2161)
|        at …
Run Code Online (Sandbox Code Playgroud)

java-9 jshell

5
推荐指数
1
解决办法
2103
查看次数

标签 统计

java-9 ×3

jshell ×3

java ×1

runtime ×1

shebang ×1