问题标签 [jshell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
79 浏览

java-9 - 在 jshell 中创建自定义反馈模式

从 jshell 中 /set 反馈的文档来看,有以下内置模式:

是否可以创建兼具简洁和静音功能的反馈模式?或者我们可以改变上述任何一种模式?或者我们可以创建自己的自定义反馈模式吗?

0 投票
3 回答
1381 浏览

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

问题:

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

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

例子:

例如脚本hello.java

如果我在 jshell 中逐行键入它会起作用,但是我运行jshell hello.java它不会。抛出java.util.NoSuchElementException

我得到的输出:

我的系统:Linux Mint 18.2(x64),JShell 版本 9.0.1

0 投票
1 回答
205 浏览

terminal - 我可以在 Unix 期望中运行 jshell 吗?

我想使用expect重定向jshell输入,这样我就可以模拟输入录制的演示。但是,虽然我可以从一个期望脚本生成一个 jshell 进程,它也可以识别 jshell 提示符,但在那之后就没有任何效果了。期望输出看起来像控制序列的东西,比如^[[24;9R,我没有看到来自 jshell 的任何输出。不同的终端类型产生不同的字符序列,但它们都不起作用。这种行为在 Ubuntu 和 Mac OS 上的期望是一致的。欢迎任何有关如何调查此问题的建议。expect -d没有帮助。

这是我要模拟的 jshell 会话的记录

这是我认为应该这样做的脚本:

当我运行该脚本(在 Mac OS 10.11.6 上,但在 Ubuntu 上得到非常相似的结果)时,我看到了这个输出

然后期望超时,并且最后一行输出被 shell 提示符覆盖(因此看起来好像在超时时正在写入更多控制字符)。

添加-d到脚本第 1 行中的期望标志会产生以下输出:

0 投票
1 回答
6324 浏览

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

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

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

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

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

我收到以下错误

我需要为 JShell 配置什么来识别我的自定义类吗?
我已将其设置为使用我的项目的类路径。

代码。
在此处输入图像描述

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

编辑:

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

同样的错误仍然存​​在,它还给了我“错误:包 angelapps.java 不存在”错误。

在此处输入图像描述

0 投票
0 回答
37 浏览

java - 如何获取对当前运行的 Jshell 的引用

我有一个文件,我在其中写了一些变量。我想在使用 JShell 打开的运行时应用程序上将这些变量解析为这个 Jshell 实例。

FileWithVars.XYZ

目前我在 jshell 启动脚本中使用 /o FileWithVars.XYZ 加载此文件,但现在我想从在 Jshell 中运行的应用程序执行相同的操作。

任何想法如何存档?

亲切的问候

0 投票
1 回答
127 浏览

java - jshell选项卡完成非实例方法

新的 Java shell,jshell,允许 tab 补全,它显示了类的给定实例可用的所有方法。例如,如果我这样做...

...我看到了Integer对象可用的所有方法。如何查看整个类可用的方法和变量,而不仅仅是类的实例?

0 投票
1 回答
63 浏览

java - JShell 如何(或在哪个文件中)存储其配置设置?

医生说:

请记住,启动脚本仅在状态重置时才加载到当前会话中。存储脚本的内容,而不是对脚本的引用。

https://docs.oracle.com/javase/9​​/jshell/scripts.htm#JSHEL-GUID-AC2A6582-6A9A-48B1-ABBF-4C9536CDFD07

例如,

但是它在哪里存储mystartscript.jsh的内容呢?

0 投票
2 回答
1648 浏览

java - JShell 如何查找变量或结果的类型

如何在 JShell 中查找变量或表达式结果的类型。

在 Java 中试验位运算符

是否有像 Python type(5<<-1) 这样的替代方法来在 Jshell 中查找表达式或变量的结果类型。

0 投票
3 回答
1088 浏览

java - 与 JShell 实例共享动态加载的类

请查看下面的编辑

我正在尝试创建一个JShell 实例,它可以让我访问并让我与创建它的JVM中的对象进行交互。这适用于在编译时可用但对于动态加载的类失败的类。

此外,交换DirectExecutionControlLocalExecutionControl给出相同的结果,但我不明白这两个类之间的区别。

如何使在运行时加载的类可用于此JShell 实例

编辑:这个问题的第一部分已经解决,下面是更新的源代码来演示问题的第二部分

这是预期的输出,如果JVMJShell 实例不共享任何内存,但是com.example.test.C直接添加到项目而不是动态加载它会改变结果,如下所示:

为什么在运行时加载的类不共享JVMJShell 实例之间的内存?

编辑2:问题似乎是由不同的类加载器引起的

在上述示例的上下文中执行以下代码:

这表明,同一个类com.example.test.C由两个不同的类加载器加载。是否可以将类添加到 JShell 实例而不再次加载它?如果不是,为什么静态加载的类已经加载?

0 投票
1 回答
1609 浏览

android-studio - Android Studio 中的 JShell 控制台

IntelliJ IDEA 2017.1 有一个内置的 JShell,它可以导入所有项目的库等。

是否可以在 Android Studio 中使用它?(它不在Tools菜单中,如博客文章中所述)。


更新:Android 仍然不完全支持 Java 8,JShell 是 Java 9。仍然可以使用gradle jshell 插件,或者使用Kotlin REPL