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

java - 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 也停止。

0 投票
1 回答
302 浏览

java - 在 Java 9 的 JShell 中创建模块

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

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

0 投票
1 回答
702 浏览

java - 是否有另一种启动远程 JVM 的方法?

我正在使用 JDK9 的 JShell API。

目前,JShell API 会在内部自动启动远程 JVM。我不想自动启动进程,而是想将这两个进程分开。

注意:我知道我可以更改虚拟机选项。但我想看看虚拟机是否可以在另一台机器上运行。

默认的执行控制最终在代码中到达这个地方

如果我指定启动,它会自动使用com.sun.jdi.CommandLineLaunch连接器,根据定义实际启动 java 程序。如果我指定 no-launch,它com.sun.jdi.SocketListen会像我预期的那样使用,一旦它启动了服务器套接字,它就会自动启动一个远程 vm 并连接到这个套接字。这我认为是出乎意料的。

我尝试过的其他事情,

我希望这会失败或被卡住,直到一个单独的进程开始。

是否有另一种方法来指定连接器,或者不启动 JVM?(我也不对“本地”感兴趣)

一些简单的选项,例如能够指定com.sun.jdi.RawCommandLineLaunch为接受自定义命令的连接器或能够使用套接字侦听连接器并等待其他进程连接。

0 投票
1 回答
830 浏览

java - JShell在 jdk 9 中无法正常工作

在 Fedora 中尝试 JShell 时,我尝试使用 此处指定的片段转换快捷方式,但我认为它不起作用它正在显示

Shift-Tab 后出现意外字符。使用“i”进行自动导入或使用“v”创建变量。有关更多信息,请参阅:

/帮助快捷方式

我尝试了这些消息中指定的方式,但结果仍然相同

有什么想法还是我做错了什么?

$javac -版本

javac 9

java版本

openjdk 版本“9”

OpenJDK 运行时环境(构建 9+181)

OpenJDK 64 位服务器 VM(内部版本 9+181,混合模式)

这是我正在尝试做的事情:

jshell$ 新的 JFrame

我键入new JFrame然后按shift+tab i(按住 shift 并释放 tab 然后按 i)。根据文档,它应该向我展示如下内容:

但它显示

Shift-Tab 后出现意外字符。使用“i”进行自动导入或使用“v”创建变量。有关更多信息,请参阅:

反而

0 投票
0 回答
376 浏览

java - JShell 代码性能

据我了解,当第一次评估代码片段时,JShell 语句被包装在合成类中。这记录在JEP-222中。

我是否可以得出结论,排除触发合成类、方法和变量生成的片段的第一次评估(假设是方法定义和调用),对相同代码片段的以下调用(例如在循环中调用相同的方法)将与普通 Java 代码一样快,如果代码片段变得“热”,甚至可以在运行时由 Java 编译器编译

0 投票
2 回答
1832 浏览

java - 如何从shell或windows命令行执行java jshell命令作为内联

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

例如 Perl 内联命令

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

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

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

哎哟输出

$temp只期待 print 000019

0 投票
2 回答
248 浏览

java - jshell中的C选项有什么用

我已经阅读了jshell 指南的介绍,但在 jshell中找不到关于 -C 选项的描述/示例。

0 投票
4 回答
2250 浏览

java-9 - 如何将参数传递给 jshell 脚本?

问题

我愿意将参数传递给 jshell 脚本。例如,我会喜欢这样的:

然后在脚本内的某个变量中使用字符串“some text”。

但是,jshell只需要一个文件列表,因此答案是:

有没有办法正确地将参数传递给 jshell 脚本?

到目前为止的解决方法

到目前为止,我唯一的解决方案是在调用脚本时使用环境变量:

然后我可以在脚本中访问它:

0 投票
1 回答
742 浏览

java - jshell 命令 `/open` 可以相对于包含脚本的文件夹而不是工作目录工作吗?

我在同一个文件夹中有两个 jshell 脚本script.jshcommons.jsh/path/folder

脚本.jsh

commons.jsh

  • 如果我在/path/folder,我可以跑步jshell script.jsh并且效果很好
  • 如果我在/path/folder/subfolder并且我运行jshell ../script.jsh,它会失败File 'commons.jsh' for '/open' is not found

有什么解决办法吗?换句话说,jshell 命令/open可以相对于包含脚本的文件夹而不是工作目录工作吗?

此处针对 bash 提出了类似的问题:Bash: How _best_ to include other scripts?

Edit1:使问题更精确

Edit2:这是我在写这个问题时正在处理的真正的 jshell 脚本,第一个可用的脚本在这里https://framagit.org/Gwendal/helpful-scripts/blob/3e8118970a6a412dfe0f199e93545745d890243f/jshell/dia2pdf.jsh打开第二个包含辅助方法的脚本https://framagit.org/Gwendal/helpful-scripts/blob/3e8118970a6a412dfe0f199e93545745d890243f/jshell/commons.jsh

0 投票
2 回答
261 浏览

java - 如何以编程方式将变量添加到调用某些代码的 Shell 中?

使用 jshell,有没有办法在解释器的范围内创建变量?我有类似的东西

我希望能够做类似的事情

那可能吗?

请注意,我所指的“范围”是 jshell 解释器正在使用的Shell对象的实际范围。我需要获取对从中调用代码的 shell 的引用,以便我可以创建变量看起来好像它们是由用户/呼叫者分配的..