1

我对 jshell 和 Java 非常陌生,并且 jshell 编辑板不接受或将代码片段传输到 jshell 时遇到问题。当我输入下面的代码片段并按“接受”和“退出”时,什么也没有发生。jshell 终端窗口中没有显示任何错误消息,并且我的屏幕上没有显示该窗口。代码似乎没有运行。

import javax.swing.*;

JFrame window = new JFrame("Another New Window");
JPanel panel = new JPanel();
JButton button = new JButton("Click me!");

panel.add(button);
window.add(panel);
window.setSize(300,100);
button.addActionListener(e -> System.out.println("Ouch! You clicked me!"));
window.setVisible(true);

但是,当我将相同的代码片段直接输入到 jshell 窗口(命令提示符)中时,该窗口会正常显示。可能出了什么问题?我犯了什么错误?

我注意到我能够得到简单操作的结果,例如2+2;在按“接受”后在 jshell 控制台窗口中显示答案,但输入到默认编辑板的实际代码似乎根本没有运行。

我正在运行 Windows 10,并且安装了最新版本的 JDK 8 和 10。

谢谢您的帮助!

4

3 回答 3

0

这不是一个答案,而是更多信息。如果我找到修复程序,我会更新这个。

我正在“Learn Java The Easy Way”第 3 章中进行同样的练习,并发现了同样的问题。也就是说,在 JShell 中一次输入 1 行会按预期打开 JFrame。

jshell> import javax.swing.JFrame;
jshell> JFrame f = new JFrame("Hello");
jshell> f.setSize(300,300);
jshell> f.setVisible(true);

JShell CLI 输入有效

然后使用 /reset 关闭它并使用 /edit 打开 JShell Edit Pad 并输入原始片段,单击“接受”,然后单击“退出”,但没有任何反应。当我再次运行 /edit 时,只有导入存在。我在再次退出之前重新输入并复制了脚本,但仍然没有。但是,当我再次打开 /edit 时,第 1 行和第 2 行就在那里。所以我再次粘贴了整个脚本,再次退出,并再次运行 /edit。这次有 1-3 行。我重复了这一点,每次再执行一行,再次运行 /edit 时,脚本中又出现一行,直到第十次按预期打开窗口。编辑 Pad 解析/在每个出口仅执行一行。

这不是一个答案或修复,但我认为它可能会给其他人一个线索来了解正在发生/没有发生的事情。就我而言,我想知道这是否可能是由混合配置或 OpenJDK 中的错误引起的。同时,我将继续阅读本书,因为无论如何这只是“概念证明”材料。

  • 软呢帽 29
  • JShell——版本 11.0.4
  • java版本
  • openjdk 版本“1.8.0_212”
  • OpenJDK 运行时环境 (build 1.8.0_212-b04)
  • OpenJDK 64 位服务器 VM(内部版本 25.212-b04,混合模式)
  • javac 11.0.4
于 2019-08-04T20:07:00.940 回答
0

我已经安装了JDK 12JRE 8它按预期工作。要重新开始JShell Edit Pad,只要确保你这样做

/reset

/edit

打开JShell Edit Pad.

在此处输入图像描述

尝试使用JDK 12.

于 2019-04-26T23:01:06.743 回答
0

如前所述,我还能够最终使其“逐行”工作。然后我重新启动了机器,第一次使用 jdk 11.0 让它工作。

于 2019-09-24T20:11:02.087 回答