问题标签 [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 回答
608 浏览

java - 我可以将 jshell repl (java 9) 添加到 vscode 的终端面板吗?

vscode 新手,搜索什么也不返回。

我想将 jshell 添加到终端窗口。可能吗?

0 投票
1 回答
234 浏览

java - 在 JShell 中访问“父范围”

似乎,JShell在另一个内部创建的对象JShell无权访问父级的JShell范围。例如:

是否有可能使父范围对孩子可见?

0 投票
2 回答
300 浏览

java - 抛出异常后,jshell 继续执行我的脚本。如何让它停止?

我尝试编写一些 jshell 脚本。当抛出异常时,jshell 仍然继续执行下一行。

如何让我的脚本表现得更像普通的 java 程序?

编辑:我只是像运行它一样jshell SCR.jsh

使用throw new Exception()or1/0不会阻止执行下一行。

该脚本包含如下语句:

我认为第二行是无法到达的。这就是我所期望的。但是异常被打印出来之后,foo也被打印出来了。

0 投票
1 回答
114 浏览

java - 面向语句的方法与面向表达式的方法

我在阅读这篇关于 java9 的文章时遇到了这一行,其中指出Java 是面向语句的,而 REPL 是面向表达式的。

有人可以解释这两者之间的区别吗?

0 投票
1 回答
417 浏览

read-eval-print-loop - 在 Java 9 上,为什么 System.getenv() 的输出在 jshell 中不完整?

我正在使用 Windows 10 并运行 Oracle 昨天发布的 Java 9 版本。

如果我打开一个jshell并输入System.out.println(System.getenv())输出如预期的那样,如下面的屏幕截图的下部所示。

但是,如果我只是输入System.getenv(),则输出中间会丢失大量数据。请参阅下面屏幕截图的初始部分。这似乎是jshell的一个功能,因为在System.getenv()输出中省略号 (" ... ")下方的屏幕截图中(在带有手绘黄色边缘的第二个框中)与丢失的数据完全对应。

缺少环境变量CommonProgramFiles的结尾部分,环境变量SPRING_HOME的开头也是如此,还有其他几个环境变量,例如Path根本没有显示。

在此处输入图像描述

(出于隐私考虑,屏幕截图中的某些信息已被模糊处理。)

有没有其他人看到同样的事情(或没有),有没有人对jshell为什么这样做有建议?

0 投票
2 回答
1348 浏览

java - 将包私有类导入 JShell

在 Java 9 发布后,我在玩 JShell,并尝试导入我制作的包。由于我正在为其编码的整个应用程序将包含在该包中,因此除了一个(我还没有编码)之外的每个类都是包私有的。我的类路径是正确的,但我仍然无法使用 JShell 包中声明的任何类型(它会引发“找不到符号”错误)。我是否需要将它们公开以便可以访问,或者有什么方法可以测试包私有类?这是我尝试过的确切代码。

我当前的目录是

我的课程路径是

并且包目录(用于字节码)是

CollatzSequence是一个包私有类,包含在collatz.

0 投票
2 回答
518 浏览

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

从帮助信息:

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

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

0 投票
2 回答
1625 浏览

java - 有没有办法修改模块路径和程序化 JShell 实例的添加模块?

我试图通过我使用JShell API创建的 JShell 实例在运行时运行一些 Java 代码。为了演示我的问题,我将分享我的简单代码。

使用我当前的设置,我有一个名为lib的目录,其中包含 MySQL Java 驱动程序:mysql-connector-java-5.1.35.jar

通过命令工具启动 JShell 并将所需的模块添加为:

然后加载mysql驱动程序对我有用:


我创建了一个类似的 Java 9 模块module-info.java

src/example/loadmysql/Runner.java为:

构建/打包后:


很明显,即使example.loadmysql模块需要 mysql 连接器,创建的 JShell 实例也不需要。所以它找不到类。

关于如何以编程方式将模块添加到 JShell 实例的任何想法,因此它像直接 JShell 编码示例一样工作?

更新- 我已经弄清楚如何设置模块路径:

但这还不够。我仍然以某种方式添加了所需的模块。

0 投票
2 回答
202 浏览

java-9 - java9版本退出jshell

我最近升级到 java9,我正在使用 java 提供的 Jshell 选项。我觉得它很直观,但我无法关闭 Jshell 窗口,有人可以建议一些相同的命令。

0 投票
7 回答
6802 浏览

java - 如何运行 JShell 文件?

我想用 JShell 运行整个文件,例如:

my-jshell-skript.java例如 my的内容在哪里40 + 2;

或者一个可执行文件,如:

现在这可能吗,还是我仍然必须采用旧方法而不是 Java-Main-Class?

编辑 1:Windows 问题

在 Windows 上,我仍然没有解决方案:

JShell 开始完全忽略我的文件。它是一个错误吗?

编辑 2:Windows 问题的解决方案

原来这是我的 foo 的内容。似乎1 + 1只能“即时”工作,而不是从文件中读取: