Панель редактирования JShell не выполняет / не выполняет фрагменты кода - PullRequest
0 голосов
/ 14 мая 2018

Я очень плохо знаком с 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.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 04 августа 2019

Это не столько ответ, сколько дополнительная информация.Я обновлю это, если найду исправление.

Я работаю над тем же упражнением в «Изучение Java, легкий путь», гл. 3, и обнаружил ту же проблему.То есть ввод по 1 строке за раз в JShell открыл JFrame, как и ожидалось.

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

JShell CLI input works

Затем он закрывается с помощью / reset и открывает JShellОтредактируйте Pad с помощью / edit и введите исходный фрагмент, нажмите «Принять», а затем «Выход», но ничего не происходит.Когда я снова запускаю / редактирую, там только импорт.Я перепечатал и скопировал сценарий, прежде чем снова выйти, но ничего не вышло.Однако, когда я снова открыл / отредактировал, строки 1 и 2 были там.Поэтому я снова вставил весь скрипт, снова вышел и снова запустил / отредактировал.На этот раз линии 1 - 3 были там.Я повторял это, и каждый раз одна дополнительная строка выполнялась и одна больше появлялась в скрипте при повторном запуске / редактировании, до десятого раза, когда окно открывалось, как ожидалось. Edit Pad parsing/executing only one additional line on each exit.

Это не ответ или исправление, но я подумал, что это может дать кому-то еще ключ к пониманию того, что происходит / не происходит.В моем случае мне интересно, может ли это быть вызвано смешанной конфигурацией или ошибкой в ​​OpenJDK.А пока я перейду к этой книге, так как в любом случае это просто «доказательство концепции».

  • Fedora 29
  • JShell - Версия 11.0.4
  • java -version
  • openjdk версия "1.8.0_212"
  • Среда выполнения OpenJDK (сборка 1.8.0_212-b04)
  • Виртуальная 64-разрядная виртуальная машина OpenJDK (сборка 25.212-b04, смешанный режим)
  • javac 11.0.4
0 голосов
/ 27 апреля 2019

У меня JDK 12 и JRE 8 установлены.Это работает, как ожидалось.Чтобы начать заново JShell Edit Pad, просто убедитесь, что вы сделали

/reset

до

/edit

, чтобы открыть JShell Edit Pad.

enter image description here

Попробуйте с JDK 12.

...