标签: jshell

用于运行应用程序的Java 9 REPL

Java 9在JDK发行版中引入了名为JShell的 REPL .有没有办法连接到运行某些应用程序的JDK的JShell,并执行引用该运行应用程序的命令.例如,执行一些方法形成应用程序代码,检查对象等.?

java read-eval-print-loop java-9 jshell

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

在Java 9中使用JShell创建模块

只是探索Java的新版本,它的新模块系统,以及使用jshell.可能我的问题没有多大意义,但我只是好奇.

所以我想出了一个问题:有没有办法在jshell中创建一个模块?或模块只能创建module-info.java

java java-9 jshell java-module

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

是否可以在使用Java 9的Eclipse IDE中使用没有class和main方法的sysout?

由于Java 9引入了JShell的概念,它使我们能够在不创建类和方法的情况下编写代码,是否可以在eclipse中使用Java 9的这一特性?

java eclipse java-9 jshell

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

使用JShell进行调试

我在JShell中编写了一个Java方法,现在我想调试它.我想设置断点或者至少逐行执行.JShell有这些调试功能吗?

java debugging java-9 jshell

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

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
查看次数

如何从 shell 或 windows 命令行以内联方式执行 java jshell 命令

有没有办法在 REPL ( jshell) 上执行 java 命令作为内联命令而不启动它?

例如 Perl 内联命令

$perl -e 'printf("%06d", 19)'
000019
Run Code Online (Sandbox Code Playgroud)

我必须启动 jshell 才能运行任何命令:

$jshell
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro
jshell> String.format("%06d", 19)
$1 ==> "000019"
Run Code Online (Sandbox Code Playgroud)

我在这里发现了类似的问题,但为单个命令创建单独的文件并不是可行的解决方案jsh

同一篇文章的另一个解决方案是:echo "1+2"|jshell

temp=`echo 'String.format("%06d", 19)'|jshell`
echo $temp
Run Code Online (Sandbox Code Playgroud)

哎哟输出

| Welcome to JShell -- Version 9 | For an introduction type: /help intro jshell> String.format("%06d", 19) $1 ==> "000019" jshell>
Run Code Online (Sandbox Code Playgroud)

$temp只期待打印000019

java java-9 jshell

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

列出jshell中的所有活动方法

是否有任何可用的命令可以在当前的jshell会话中打印所有新创建的方法?类似/list但仅适用于方法的东西

java java-9 jshell

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

如何在intellij JShell控制台中导入自定义类

我正在使用新的intellij Jshell控制台(在此处介绍https://blog.jetbrains.com/idea/2017/09/java-9-and-intellij-idea/)

我创建了一个简单的类文件Test2.java

public class Test2 {

    public static String test(){
        return "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

JShell控制台能够在提示中找到该方法 在此输入图像描述

当我尝试在intellij jshell控制台上运行它时(工具> Jshell控制台)

Test2.test();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

"C:\Program Files\Java\jdk-9.0.1\bin\java" --add-modules java.xml.bind -classpath "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.1\lib\jshell-frontend.jar;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.1\lib\jshell-protocol.jar" com.intellij.execution.jshell.frontend.Main

ERROR: cannot find symbol
  symbol:   variable Test2
  location: class 
Rejected Test2.test()
Run Code Online (Sandbox Code Playgroud)

有什么东西我必须配置JShell来识别我的自定义类?
我已将其设置为使用项目的类路径.

代码.
在此输入图像描述

Jshell控制台和下面的错误. 在此输入图像描述

编辑:

我还尝试将代码移动到一个包中,并按照用户@NullPointer的建议在Jshell中导入它.

同样的错误仍然存​​在,它也给我"错误:包angelapps.java不存在"错误.

在此输入图像描述

java intellij-idea jshell

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

当我在 Windows cmd 中按下 BackSpace 按钮时,Jshell 崩溃

当我打开窗口cmd并输入时jshell,它可以工作,但是当我在写东西时。每当我按下BackSpace键。例如,如果我想删除一个错误的字母。jshell 因波纹管错误而崩溃,我正在使用windows 10,并且C:\Program Files\Java\jdk-11.0.1是我在 Windows 中的唯一路径System Environment variables,我也cmd用作终端。这是错误:

Exception in thread "main" java.lang.NullPointerException: charsetName
        at java.base/java.lang.String.<init>(String.java:464)
        at java.base/java.lang.String.<init>(String.java:537)
        at jdk.internal.le/jdk.internal.jline.extra.AnsiInterpretingOutputStream.write(AnsiInterpretingOutputStream.java:92)
        at java.base/java.io.OutputStream.write(OutputStream.java:157)
        at java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233)
        at java.base/sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:312)
        at java.base/sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:316)
        at java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:153)
        at java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:254)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.flush(ConsoleReader.java:1052)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:3259)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2383)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2371)
        at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.readLine(ConsoleIOContext.java:142)
        at jdk.jshell/jdk.internal.jshell.tool.JShellTool.getInput(JShellTool.java:1261)
        at jdk.jshell/jdk.internal.jshell.tool.JShellTool.run(JShellTool.java:1174)
        at jdk.jshell/jdk.internal.jshell.tool.JShellTool.start(JShellTool.java:975)
        at jdk.jshell/jdk.internal.jshell.tool.JShellToolBuilder.start(JShellToolBuilder.java:254)
        at jdk.jshell/jdk.internal.jshell.tool.JShellToolProvider.main(JShellToolProvider.java:120)
Run Code Online (Sandbox Code Playgroud)

java windows backspace jshell

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

intellij 中的 Jshell 不允许泛型类型

我刚开始在 intellij idea 社区版本中使用 jshell。当我在 jshell 中编写以下代码时,它可以工作。

List<String> list = List.of("a", "b", "c");
System.out.println(list);
Run Code Online (Sandbox Code Playgroud)

但是,相同的代码在 intellij 中不起作用。它说“预期的表达”。它执行得很好,但显示List<String>. 问题是“自动完成”不起作用。为了解决这个问题,我们可以使用原始类型,但我想要一个通用类型。有什么我想念的吗?如何编写泛型类型?

java intellij-idea jshell java-14

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