java.io. Консольная поддержка в Eclipse IDE

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

103
задан ROMANIA_engineer 30 May 2016 в 08:19
поделиться

5 ответов

Я предполагаю, что Вы хотите быть в состоянии использовать неродной посредством отладки от Eclipse. Можно просто выполнить классы внешне путем установки созданных классов в каталогах bin на пути к классу JRE.

java -cp workspace\p1\bin;workspace\p2\bin foo.Main

можно отладить использование удаленного отладчика и использование в своих интересах файлов класса, созданных в проекте.

В этом примере, структура проекта Eclipse похожа на это:

workspace\project\
                 \.classpath
                 \.project
                 \debug.bat
                 \bin\Main.class
                 \src\Main.java

1. Запустите Консоль JVM в Режиме отладки

, debug.bat является пакетным файлом Windows, который должен быть выполнен внешне от консоль cmd.exe .

@ECHO OFF
SET A_PORT=8787
SET A_DBG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%A_PORT%,server=y,suspend=y
java.exe %A_DBG% -cp .\bin Main

В аргументах, порт отладки был установлен на 8787 . аргумент suspend=y говорит JVM ожидать до присоединений отладчика.

2. Создайте Конфигурацию Запуска Отладки

В Eclipse, откройте диалоговое окно Отладки (Выполнение> Открывают Debug Dialog...), и создайте новое Удаленное JAVA-приложение конфигурация со следующими настройками:

  • Проект: Ваше название проекта
  • Тип соединения: Стандарт (Присоединение Сокета)
  • Хост: порт localhost
  • : 8787

3. Отлаживая

Так, все, необходимо сделать любое время, Вы хотите отладить приложение:

  • устанавливает запуск точки останова
  • пакетный файл в консольном
  • запуске настройка отладочного процесса
<час>

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

50
ответ дан McDowell 24 November 2019 в 04:22
поделиться

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

5
ответ дан Heath Borders 24 November 2019 в 04:22
поделиться

Найденный чем-то об этом в http://www.stupidjavatricks.com/?p=43 .

И к сожалению, так как консоль является окончательной, Вы не можете расширить ее для создания обертки вокруг system.in и system.out, который делает это также. Даже в затмении подключаются с консоли к Вам, все еще имеют доступ к тем. Это, вероятно, почему затмение еще не включило это в их консоль...

я понимаю, почему Вы не хотели бы иметь любой другой способ получить консоль кроме System.console без метода set, но я не понимаю, почему Вы не хотели бы, чтобы кто-то был в состоянии переопределить класс для создания консоли насмешки/тестирования...

4
ответ дан John Gardner 24 November 2019 в 04:22
поделиться

Насколько я могу сказать, нет никакого способа получить Консольный объект от Eclipse. Я просто удостоверился бы та консоль! = пустой указатель, затем JAR это и выполненный это из командной строки.

2
ответ дан perimosocordiae 24 November 2019 в 04:22
поделиться

Кажется, нет никакого способа получить java.io. Консольный объект при запуске приложения через Eclipse. Консоль командной строки не открыта с приложением, когда это выполняется как фоновый процесс (предпосылки к Eclipse?). В настоящее время нет никакого плагина Eclipse для обработки этой проблемы, главным образом вследствие того, что java.io. Консоль является заключительным классом.

Все, что можно действительно сделать, протестировать возвращенный Консольный объект на пустой указатель и продолжиться оттуда.

1
ответ дан Ross 24 November 2019 в 04:22
поделиться
Другие вопросы по тегам:

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