标签: jshell

如何使用jshell运行java应用程序?

如何使用jshell运行java应用程序?它应该能够像 bash 那样指定类路径并调用 java 命令并传递一些参数,例如,

#!/bin/bash
$ARGS=...
$CLASSPATH=...
java -cp $CLASSPATH $ARGS com.example.MyApp
Run Code Online (Sandbox Code Playgroud)

更新:
我认为需要运行时或进程的包装,例如,

jshell> private String executeCommand(String command) {
   ...>
   ...>         StringBuffer output = new StringBuffer();
   ...>
   ...>         Process p;
   ...>         try {
   ...>             p = Runtime.getRuntime().exec(command);
   ...>             p.waitFor();
   ...>             BufferedReader reader =
   ...>                             new BufferedReader(new InputStreamReader(p.getInputStream()));
   ...>
   ...>                         String line = "";
   ...>             while ((line = reader.readLine())!= null) {
   ...>                 output.append(line + "\n");
   ...>             }
   ...>
   ...>         } catch (Exception e) {
   ...>             e.printStackTrace();
   ...>         }
   ...> …
Run Code Online (Sandbox Code Playgroud)

java java-9 jshell

4
推荐指数
1
解决办法
2453
查看次数

如何在 JShell / Kulla 中停止无限循环?

JShell 是一个 Java REPL,计划与 Java 9 一起发布;但是,它有一个公开测试版。

如果我通过键入以下内容在 JShell (Project Kulla) 中创建一个无限循环:

-> while(true) {}
Run Code Online (Sandbox Code Playgroud)

JShell 将永远循环。除了完全退出 JShell,有没有办法在 JShell 中运行时停止单个代码行(在您已经开始评估代码之后)?

java infinite-loop while-loop jshell

3
推荐指数
1
解决办法
901
查看次数

Jshell / env命令不允许在Classpath中设置多个Jar文件

嗨,我在Windows 10操作系统上使用JDK11,而我正在使用的Jshell版本是11.0.1。

我正在尝试执行各种Jshell命令,并被卡在以下命令的执行中

我有一个示例程序,该示例程序使用多个JAR文件Employee.jar和spring-context-5.1.3.jar文件中的类。

登录到Jshell之后,我正在使用以下命令在Jshell中设置类路径,但它会引发错误

jshell> /env -class-path D:\JshellClassPath\Employee.jar:D:\JshellClassPath\spring-context-5.1.3.jar
|  File 'D:\JshellClassPath\Employee.jar:D:\JshellClassPath\spring-context-5.1.3.jar' for '--class-path' is not found.
Run Code Online (Sandbox Code Playgroud)

如果我仅设置一个Jar文件并执行上述命令,则可以正常工作,但是为什么我不能设置多个Jar文件/ env命令?

java jshell java-11

3
推荐指数
1
解决办法
39
查看次数

JShell 中除了自动导入 java.lang 包之外还有什么?

我观察到,在JShell会议,不仅包“的java.lang”,但不少其他的包(即未在Java类文件自动导入,例如LinkedListMath与其他几种)似乎是进口的,由默认。

我想知道,默认情况下,在 JShell 会话中还有哪些其他包可用,以及是什么促使这种区别于普通类文件的?

我在JEP 222上找不到任何东西,无论是这种自动/隐式导入的动机,还是实际导入的文档。

java jshell

3
推荐指数
1
解决办法
46
查看次数

JShell/Java 9中的相等性是怎么回事?

我一直在使用JShell来测试它,今天我遇到了相当有趣的行为.

jshell> String a = "A"
a ==> "A"

jshell> String b = "A"
b ==> "A"

jshell> a == b
$4 ==> true

jshell> "A" == "A"
$5 ==> true
Run Code Online (Sandbox Code Playgroud)

我首先想知道这是否是Java 9的一个功能,我通过使用Java 9编译和运行该程序来检查它

public class Equus {
    public static void main(String... args) {
        String a = "A";
        String b = "A";
        System.out.println("a == b");
        System.out.println(a == b);
        System.out.println("\"A\" == \"A\"");
        System.out.println("A" == "A");
    }
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,我得到了

a == b 
true 
"A" == "A" 
true
Run Code Online (Sandbox Code Playgroud)

作为我的输出也是如此.这里发生了什么?为什么ab彼此相等,为什么是 …

java java-9 jshell

2
推荐指数
1
解决办法
186
查看次数

JDK12的Java运行时版本

这不是真正的错误,但是当我检查运行时版本时,它提供了以下内容,这是否表示我做错了什么?

jshell> Runtime.version()
$3 ==> 12.0.1+12
Run Code Online (Sandbox Code Playgroud)

java jshell java-12

2
推荐指数
1
解决办法
163
查看次数

JShell 在启动时抛出 StringIndexOutOfBoundsException

我正在尝试在 Debian 10 buster 上启动 jshell。我从 Oracle 下载了 jdk-16_linux-x64_bin.tar.gz 并将其解压到我的主目录中的“jdk-16”中。我已经设置了 PATH 和 JAVA_HOME:

~$ export PATH=~/jdk-16/bin:$PATH
~$ export JAVA_HOME=~/jdk-16
~$ javac --version
javac 16
~$ java --version
java 16 2021-03-16
Java(TM) SE Runtime Environment (build 16+36-2231)
Java HotSpot(TM) 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

测试“Hello world”程序在此环境下能否成功编译并运行。但是,当我尝试运行 jshell 时,出现以下错误:

~$ jshell
|  Welcome to JShell -- Version 16
|  For an introduction type: /help intro
Exception in thread "main" java.io.IOError: java.lang.StringIndexOutOfBoundsException: String index out of range: 5
    at jdk.internal.le/jdk.internal.org.jline.utils.Curses.tputs(Curses.java:62) …
Run Code Online (Sandbox Code Playgroud)

java linux debian jshell

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

标签 统计

java ×7

jshell ×7

java-9 ×2

debian ×1

infinite-loop ×1

java-11 ×1

java-12 ×1

linux ×1

while-loop ×1