Есть ли что-то как интерактивный режим REPL Python, но для Java?

Предупреждение: невозможно изменить информацию заголовка - уже отправленные заголовки

Случается, когда ваш скрипт пытается отправить HTTP-клиенту клиенту, но он уже был выведен ранее, что привело к тому, что заголовки уже отправлены на клиент.

Это E_WARNING , и он не остановит сценарий.

Типичным примером может быть файл шаблона, подобный этому:


    
    My Page

...

Функция session_start() попытается отправить клиенту файлы cookie сеанса. Но PHP уже отправил заголовки, когда он написал элемент в выходной поток. Вам нужно будет переместить session_start() в верхнюю часть.

Вы можете решить эту проблему, пройдя через строки до код, запускающий предупреждение, и проверьте, где он выдается. Переместите любой заголовок, отправляющий код перед этим кодом.

Часто пропускаемый вывод - это новые строки после закрытия PHP ?>. Считается стандартной практикой опускать ?>, когда это последняя вещь в файле. Аналогичным образом, еще одной распространенной причиной этого предупреждения является то, что перед открытием перед ним появляется пустое пространство, строка или невидимый символ, в результате чего веб-сервер отправляет заголовки и пробел / новую строку, таким образом, когда PHP начинает синтаксический анализ, он не сможет для отправки любого заголовка.

Если в вашем файле содержится более одного кодового блока , у вас не должно быть пробелов между ними. (Примечание: у вас может быть несколько блоков, если у вас есть код, который был автоматически сконструирован)

Также убедитесь, что в вашем коде не указаны знаки байтового заказа, например, когда кодировка скрипта является UTF -8 с BOM.

Вопросы, относящиеся

92
задан svick 29 January 2015 в 22:13
поделиться

13 ответов

редактирование Начиная с Java 9 там JShell

, за которым Исходный ответ следует

, можно также использовать Консоль Groovy. Это - интерактивная консоль, где можно сделать то, что Вы хотите. Так как Groovy также включает классы с базовой платформы Java, Вы будете в состоянии использовать те классы также.

Это похоже на это:

Screenshot of Groovy

64
ответ дан OscarRyz 24 November 2019 в 06:23
поделиться

Большей части IDE назвали окно что-то как "непосредственный режим", который позволит Вам оценивать код Java на лету.

1
ответ дан krosenvold 24 November 2019 в 06:23
поделиться

Scala также предлагает интерактивную консоль. Я смог использовать его для получения результата для выражения в вопросе путем полного определения InetAddress, как в:

java.net.InetAddress.getAllByName("localhost")
7
ответ дан joel.neely 24 November 2019 в 06:23
поделиться

отличная консоль позволяет Вам делать это. Это на самом деле было предназначено, чтобы попытаться протестировать отличный код, но так как отличный надмножество Java, это позволяет простой материал Java также.

я просто ввел это в консоль:

InetAddress.getAllByName('localhost')

и CTRL-R хита, тогда это возвратилось:

groovy> InetAddress.getAllByName('localhost')

Result: [localhost/127.0.0.1]
7
ответ дан Ole 24 November 2019 в 06:23
поделиться

Clojure обеспечивает REPL, который можно использовать.

8
ответ дан Ande TURNER 24 November 2019 в 06:23
поделиться

Jython является реализацией Python, которая позволяет Вам осмотреть и взаимодействовать с объектами Java.

>>> from java.net import *
>>> InetAddress.getAllByName("google.com")
array(java.net.InetAddress,[google.com/209.85.171.100, 
                            google.com/74.125.45.100,
                            google.com/74.125.67.100])
11
ответ дан jfs 24 November 2019 в 06:23
поделиться

Как альтернатива Groovy, попробуйте Beanshell: http://www.beanshell.org/

Это более подобно Java и позволяет Вам использовать синтаксис Java непосредственно.

11
ответ дан Tim Jansen 24 November 2019 в 06:23
поделиться

Для людей с доступом к Mathematica JLink позволяет Вам Java доступа и сценарий с кодом Mathematica:

Needs["JLink`"]
LoadJavaClass["java.net.InetAddress"]
InetAddress`getAllByName["localhost"]

Shift-Enter хита для оценки, и Вы добираетесь

{<<JavaObject[java.net.Inet4Address>>}

Затем можно использовать функцию Карты Mathematica для вызова toString на возвращенных объектах:

#@toString[]& /@ %

получить результат (или использовать менее неясный синтаксис, Map[Function[obj, obj@toString[]], %]):

{"localhost/127.0.0.1"}

Если Вы начнете становиться серьезными с этим, то Вы захотите прочитать учебное руководство Todd Gayley по http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html.

3
ответ дан jfklein 24 November 2019 в 06:23
поделиться

В Eclipse есть функция для этого, хотя это не цикл. Это называется «Страница альбома для вырезок». Я предполагаю, что аналогия должна заключаться в том, что у вас есть альбом для вырезок, в котором вы собираете небольшие фрагменты кода.

В любом случае, чтобы он работал, откройте проект в Eclipse (ваша страница Scrapbook будет связана с проектом - Eclipse нравится, когда проекты являются собственностью).

Затем:

  1. В окне навигатора проекта выберите папку, которая существует где-то в вашем проекте.
  2. Либо выберите меню File -> New -> Other, либо нажмите Control-N.
  3. Выберите Java -> Java Run / Debug -> Scrapbook Page.
  4. Нажмите «Далее», затем укажите имя файла, затем нажмите «Готово».

Теперь у вас есть страница для вырезок. Введите код, например, такой:

System.out.println (System.getProperties ());

Затем выделите текст мышью и либо нажмите Control-U, либо выберите «Выполнить» в контекстном меню. Код будет запущен, и выходные данные появятся на консоли.

Вы также можете ввести выражение, выбрать его и выбрать «Показать» в контекстном меню. Он оценит выражение и напечатает его тип. Например, при запуске Display на 1 + 2 будет напечатано (int) 3 .

52
ответ дан 24 November 2019 в 06:23
поделиться

Вы можете взглянуть на BlueJ , который представляет собой интерактивную среду разработки Java, предназначенную для обучения ООП, а не как полноценную среду IDE, такую ​​как Eclipse или NetBeans. В любом случае это довольно забавно.

Вы можете увидеть это в действии на YouTube в серии руководств по Java.

1
ответ дан 24 November 2019 в 06:23
поделиться

BeanShell - это небольшой бесплатный встраиваемый интерпретатор исходного кода Java с функциями языка объектных сценариев, написанный на Java. BeanShell динамически выполняет стандартный синтаксис Java и расширяет его с помощью обычных средств создания сценариев, таких как свободные типы, команды и закрытие методов, как в Perl и JavaScript. Вы можете использовать BeanShell в интерактивном режиме для экспериментов и отладки Java, а также для расширения ваши приложения по-новому. Создание сценариев Java подходит для широкого спектра приложений, включая быстрое создание прототипов, расширение пользовательских сценариев, механизмы правил, конфигурацию, тестирование, динамическое развертывание, встроенные системы и даже обучение Java.

http://www.beanshell.org/

http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax

28
ответ дан 24 November 2019 в 06:23
поделиться

Jython, JIRB для JRuby, Groovy (groovyconsole и др.) И Beanshell - все это жизнеспособные варианты.

Я использовал InteractiveConsole для Jython, она действительно прекрасно работала в приложении.

0
ответ дан 24 November 2019 в 06:23
поделиться

Если вы уже знаете Groovy (что, я полагаю, вы знаете, поскольку вы упомянули Groovy Console), просто используйте groovysh или groovyConsole, которые включены в Groovy distro. Если у вас есть пользовательские jar-файлы, которые вы хотите импортировать, вы можете написать командный файл, который запускает groovysh / groovyConsole с теми, которые добавлены в путь к классам. Вы также можете сделать это

this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))

из оболочки для загрузки других jar-файлов.

Несколько лет назад я использовал Jython, чтобы делать именно то, о чем вы просите. В рамках моего сценария сборки я создал пользовательские файлы jython.bat и .py, которые включали полный путь к классам для проекта, над которым я работал. Таким образом, когда я запустил Jython, у него был бы весь доступный код, и он запускал бы Spring, чтобы я мог вертеться в реальной системе. То же самое можно сделать с Groovy, JRuby, BeanShell и т. Д.

2
ответ дан 24 November 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: