标签: jshell

如何清除Java 9 JShell控制台?

我没有找到任何清除Java-9 JShell控制台的命令.我也试图通过这个程序清除JShell控制台,但它也不起作用.

import java.io.IOException;

class CLS {
    public static void main(String... arg) throws IOException, InterruptedException {
        new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为在早期访问中我们还没有可用的功能.有人有个主意吗?

java java-9 jshell

14
推荐指数
3
解决办法
2321
查看次数

有没有办法在jshell中为顶级函数使用方法引用?

假设我在jshell中这样做:

jshell> void printIsEven(int i) {
   ...>     System.out.println(i % 2 == 0);
   ...> }
|  created method printIsEven(int)

jshell> List<Integer> l = Arrays.asList(7,5,4,8,5,9);
l ==> [7, 5, 4, 8, 5, 9]

jshell> l.forEach(/* ??? */); // is it possible to use a method reference here?
Run Code Online (Sandbox Code Playgroud)

在普通程序中,我可以l.forEach(this::printIsEven)在非静态上下文中或l.forEach(MyClass::printIsEven)在名为的类的静态上下文中编写MyClass.

this::printIsEven在jshell中使用不起作用,因为jshell在静态上下文中执行语句,但是你不能使用静态方法引用,因为没有类名称来加前缀::printIsEven,而尝试l.forEach(::printIsEven)只是一个语法错误.

java method-reference java-9 jshell

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

在JShell中,如何从Maven项目导入类路径

我正在开发一个本地Maven项目.如何jshell使用包含所有依赖项的项目类路径启动,以便我可以在JShell中测试项目或依赖项类.

classpath maven java-9 jshell

12
推荐指数
2
解决办法
2530
查看次数

在jshell-11中,为什么重置为null的重新声明的引用变量仍然具有类型?

当在第33行重新声明Integer'a'时,为什么jshell将引用变量显示为Integer的实例(参考第38和39行)?重新声明后,第34行显示'a'设置为null.当'a'在第6行声明但未给出值时,或在第22行中重置为null时,'a'不被视为Integer的实例.我希望当引用变量被重新声明时,因为它的值为null,所以它不是一个类型的实例; 然而,事实并非如此.

01: java-lava:~ cafedude$ jshell
02: |  Welcome to JShell -- Version 11
03: |  For an introduction type: /help intro
04: 
05: jshell> Integer a;
06: a ==> null
07: |  created variable a : Integer
08: 
09: jshell> a instanceof Integer;
10: $2 ==> false
11: |  created scratch variable $2 : boolean
12: 
13: jshell> a = 1;
14: a ==> 1
15: |  assigned to a : Integer
16: 
17: jshell> a instanceof Integer;
18: …
Run Code Online (Sandbox Code Playgroud)

java instanceof jshell java-11

12
推荐指数
2
解决办法
143
查看次数

Intellij IDEA中的Java 11 JShell

我有Java 11 JDK和IntelliJ IDEA 2018.2.4(64位).当我使用Java 10.0.2时,IntelliJ IDEA中的JShell控制台工作正常.现在我已升级到Java 11,JShell控制台已停止工作.单击"运行"按钮或按Ctrl + Enter(参见屏幕截图)时,什么都没发生.

我的项目使用Java 11编译和运行很好 - 它只是JShell控制台不起作用.(此外,JShell在命令提示符下运行正常,它只在IDEA内部无效.)我可以在两台机器上重现这个问题,一台在家运行IDEA Community Edition 2018.2.4,另一台在运行Ultimate 2018.2的工作0.3.

我需要做一些配置来解决这个问题吗?

截图

java intellij-idea jshell java-11

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

如何在jshell中为一般多态静态方法注明类型参数?

在普通的Java中,我可以写

class P {
    static <A> A id (A x) { return x; }
    static int y = P.<Integer>id(8);
    static String bar = P.<String>id("foo");
}
Run Code Online (Sandbox Code Playgroud)

在jshell中,我可以声明和使用 id

jshell> <A> A id (A x) { return x; }
|  created method id(A)

jshell> int x = id(8)
x ==> 8

jshell> String y = id("foo")
y ==> "foo"
Run Code Online (Sandbox Code Playgroud)

但我没有看到如何使类型参数明确.

jshell> String y = <String>id("foo")
|  Error:
|  illegal start of expression
|  String y = <String>id("foo");
|                     ^
Run Code Online (Sandbox Code Playgroud)

隐含上下文类的名称是什么?

(允许我回答这个问题的jshell规范的一部分)在哪里?http://openjdk.java.net/jeps/222 …

java jshell

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

可以使用Java 9 jshell在另一个JVM中运行代码吗?

Java 9有一个Java的read-eval-print循环,叫做jshell.我从命令行看到它的基本模式.它还能用于远程过程吗?换句话说,我可以连接到另一个Java进程并输入代码片段以在该运行时内运行吗?这将是改变应用程序服务器配置状态,而无需编写与UI的管理工具的好方法.

java java-9 jshell

10
推荐指数
2
解决办法
736
查看次数

在Java中,/(即正斜杠)在像$Lambda$15/0x00000008000a9440@32e6e9c3这样的对象引用中意味着什么?

在 JShell 中,如果我这样做:

interface Foo { String foo(); }
(Foo) () -> "hi"
Run Code Online (Sandbox Code Playgroud)

我明白了

|  created interface Foo
$2 ==> $Lambda$15/0x00000008000a9440@32e6e9c3
Run Code Online (Sandbox Code Playgroud)

通过以下研究,我知道以下内容:

$Lambda = 对生成的字节码的内存中引用,而不是由匿名内部类 (AIC) 持久保存到磁盘的引用

$15 = AIC 的对象引用

@32e6e9c3 =创建的对象的序列号——至少在 IntelliJ 中

但是(斜线)表示什么/,如/0x00000008000a9440

java jvm jshell

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

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

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

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

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

JShell不会使用Git Bash执行任何操作

我在Windows 上安装了Java9(Oracle网站上当前可用的版本)(Windows 10 x64 Professional,也是最新的,作为vmware虚拟机运行 - > VMware Workstation 12).我添加jdk\bin到用户路径并尝试使用Git Bash执行命令,但即使JShell启动,它也不会在按下后执行任何命令Enter,它只是坐在那里而不做任何事情.

有趣的是,它与Windows的默认命令行完美的作品CMDPowershell.如果我没记错,Git Bash是基于Cygwin的.这可能是什么原因?

此外,它没有直接连接JShell,但我在一台不同的机器上有一些类似的问题,有一些命令行工具,如JHipster(适用于CMD但不适用于GitBash).

必要的截图: -

在此输入图像描述

编辑:使用jshell -v并没有什么区别.此外,使用任何REPL帮助程序命令,/help/help intro使shell也停止.

java git-bash java-9 jshell

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