Случается, когда ваш скрипт пытается отправить HTTP-клиенту клиенту, но он уже был выведен ранее, что привело к тому, что заголовки уже отправлены на клиент.
Это E_WARNING
, и он не остановит сценарий.
Типичным примером может быть файл шаблона, подобный этому:
My Page
...
Функция session_start()
попытается отправить клиенту файлы cookie сеанса. Но PHP уже отправил заголовки, когда он написал элемент в выходной поток. Вам нужно будет переместить
session_start()
в верхнюю часть.
Вы можете решить эту проблему, пройдя через строки до код, запускающий предупреждение, и проверьте, где он выдается. Переместите любой заголовок, отправляющий код перед этим кодом.
Часто пропускаемый вывод - это новые строки после закрытия PHP ?>
. Считается стандартной практикой опускать ?>
, когда это последняя вещь в файле. Аналогичным образом, еще одной распространенной причиной этого предупреждения является то, что перед открытием перед ним появляется пустое пространство, строка или невидимый символ, в результате чего веб-сервер отправляет заголовки и пробел / новую строку, таким образом, когда PHP начинает синтаксический анализ, он не сможет для отправки любого заголовка.
Если в вашем файле содержится более одного кодового блока , у вас не должно быть пробелов между ними. (Примечание: у вас может быть несколько блоков, если у вас есть код, который был автоматически сконструирован)
Также убедитесь, что в вашем коде не указаны знаки байтового заказа, например, когда кодировка скрипта является UTF -8 с BOM.
Вопросы, относящиеся
редактирование Начиная с Java 9 там JShell
, за которым Исходный ответ следует
, можно также использовать Консоль Groovy. Это - интерактивная консоль, где можно сделать то, что Вы хотите. Так как Groovy также включает классы с базовой платформы Java, Вы будете в состоянии использовать те классы также.
Это похоже на это:
Большей части IDE назвали окно что-то как "непосредственный режим", который позволит Вам оценивать код Java на лету.
Scala также предлагает интерактивную консоль. Я смог использовать его для получения результата для выражения в вопросе путем полного определения InetAddress, как в:
java.net.InetAddress.getAllByName("localhost")
отличная консоль позволяет Вам делать это. Это на самом деле было предназначено, чтобы попытаться протестировать отличный код, но так как отличный надмножество Java, это позволяет простой материал Java также.
я просто ввел это в консоль:
InetAddress.getAllByName('localhost')
и CTRL-R хита, тогда это возвратилось:
groovy> InetAddress.getAllByName('localhost')
Result: [localhost/127.0.0.1]
Clojure обеспечивает REPL, который можно использовать.
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])
Как альтернатива Groovy, попробуйте Beanshell: http://www.beanshell.org/
Это более подобно Java и позволяет Вам использовать синтаксис Java непосредственно.
Для людей с доступом к 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.
В Eclipse есть функция для этого, хотя это не цикл. Это называется «Страница альбома для вырезок». Я предполагаю, что аналогия должна заключаться в том, что у вас есть альбом для вырезок, в котором вы собираете небольшие фрагменты кода.
В любом случае, чтобы он работал, откройте проект в Eclipse (ваша страница Scrapbook будет связана с проектом - Eclipse нравится, когда проекты являются собственностью).
Затем:
Теперь у вас есть страница для вырезок. Введите код, например, такой:
System.out.println (System.getProperties ());
Затем выделите текст мышью и либо нажмите Control-U, либо выберите «Выполнить» в контекстном меню. Код будет запущен, и выходные данные появятся на консоли.
Вы также можете ввести выражение, выбрать его и выбрать «Показать» в контекстном меню. Он оценит выражение и напечатает его тип. Например, при запуске Display на 1 + 2
будет напечатано (int) 3
.
Вы можете взглянуть на BlueJ , который представляет собой интерактивную среду разработки Java, предназначенную для обучения ООП, а не как полноценную среду IDE, такую как Eclipse или NetBeans. В любом случае это довольно забавно.
Вы можете увидеть это в действии на YouTube в серии руководств по Java.
BeanShell - это небольшой бесплатный встраиваемый интерпретатор исходного кода Java с функциями языка объектных сценариев, написанный на Java. BeanShell динамически выполняет стандартный синтаксис Java и расширяет его с помощью обычных средств создания сценариев, таких как свободные типы, команды и закрытие методов, как в Perl и JavaScript. Вы можете использовать BeanShell в интерактивном режиме для экспериментов и отладки Java, а также для расширения ваши приложения по-новому. Создание сценариев Java подходит для широкого спектра приложений, включая быстрое создание прототипов, расширение пользовательских сценариев, механизмы правил, конфигурацию, тестирование, динамическое развертывание, встроенные системы и даже обучение Java.
http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax
Jython, JIRB для JRuby, Groovy (groovyconsole и др.) И Beanshell - все это жизнеспособные варианты.
Я использовал InteractiveConsole
для Jython, она действительно прекрасно работала в приложении.
Если вы уже знаете 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 и т. Д.