it-swarm.com.ru

как я могу отладить банку во время выполнения?

Я нахожусь в довольно странной позиции (с моей точки зрения новичка в Java):

  1. используя Eclipse, я написал «Java-программу» (некоторые файлы .Java с классами в), которая, по сути (пакетно), читает текстовый файл * .csv, «оценивает» его содержимое и записывает результаты в текстовый файл * _out.csv. Чтобы найти входной файл, он использует «средство выбора файлов» (пример можно найти здесь: http://docs.Oracle.com/javase/tutorial/uiswing/components/filechooser.html )

  2. Я отладил весь код и, используя отладчик, он работает.

  3. Я запустил код (основной класс, который вызывает все остальные по порядку) и он работает, в то время как в Eclipse.

  4. Я экспортировал все содержимое проекта в файл «runnable jar».

Заметьте, что, если выбирать файл отдельно, это, в основном, «пакет», который читает и пишет: пользовательский интерфейс практически отсутствует. Находясь в Eclipse, я показал некоторые внутренние результаты, используя что-то вроде "if (debug) System.out.print (" что-то напечатать ");", обеспечивающее установку "debug" TRUE в то время как отладка и ЛОЖЬ в производственной среде.

ВСЕ из перечисленного сработало!

Теперь, запустив исполняемый файл jar (дважды щелкните файл jar в Win/XP), я вижу средство выбора файлов и могу его использовать, но после выбора входного файла ... ничего далее: (без пользовательского интерфейса) Я не знаю, был ли файл прочитан, я не вижу ни одного сгенерированного выходного файла, и у меня даже нет «консоли», чтобы вывести какое-либо промежуточное сообщение отладки, чтобы увидеть если jar работает, даже если я реэкспортирую его с переменной отладки, установленной в TRUE.

Есть ли способ «отладки во время выполнения» запущенного фляги (например, MsgBox от VB или что-то другое)? какой-то "файл журнала" я могу "включить" или посмотреть? (очевидно, поскольку мой jar-файл не записывает файл результатов, я просто не могу попытаться написать также * .log) Я также должен сказать, что я просто не могу установить иную, кроме Eclipse, на свою машину (и мне просто повезло, что она работала), так что никаких обычных инструментов разработчика, утилит и других полезных вещей нет.

33
eewing

Даже если это исполняемый файл jar, вы все равно можете запустить его из консоли - откройте окно терминала, перейдите в каталог, содержащий jar, и введите «Java -jar yourJar.jar». Он будет работать в этом окне терминала, и там будут отображаться выходные данные sysout и syserr, включая трассировки стека из необработанных исключений. Убедитесь, что для вашей отладки установлено значение true при компиляции. И удачи.


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

В будущем проекте, если он достаточно большой, вы можете использовать одно из стандартных средств ведения журнала для вывода «отладки»; тогда будет легко (ier) перенаправить его в файл вместо зависимости от наличия консоли. Но для такой небольшой работы это должно быть хорошо.

14
arcy

http://www.eclipsezone.com/Eclipse/forums/t53459.html

В основном запустите его с:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044

Приложение при запуске будет ждать, пока вы не подключитесь из другого источника.

80
RamonBoza

Вы можете активировать возможность отладки JVM при запуске команды Java со специальной опцией:

Java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar path/to/some/war/or/jar.jar

При запуске jar.jar в командной строке:

  • поместите this экземпляр JVM в роль сервера (server=y), прослушивающего порт 8000 (address=8000)
  • написать Listening for transport dt_socket at address: 8000 в stdout и
  • затем приостановите приложение (suspend=y), пока не подключится какой-либо отладчик. В этом сценарии отладчик действует как client.

Общие варианты выбора отладчика:

  • Eclipse Debugger: в Run -> Debug Configurations ... -> выберите Remote Java Application -> нажмите кнопку Новая конфигурация запуска. Укажите произвольное Имя для этой конфигурации отладки, Тип подключения: Стандартное (Socket Attach) и в качестве Свойства подключения записи Host: localhost, Порт: 8000 , Примените изменения и нажмите Debug. В тот момент, когда Eclipse Debugger успешно подключился к JVM, должен начаться запуск jar.jar.
  • Инструмент командной строки jdb: Запустите его с помощью jdb -connect com.Sun.jdi.SocketAttach:port=8000
37
Abdull

С помощью IntelliJ IDEA вы можете создать конфигурацию времени исполнения Jar Application, выбрать JAR, источники, JRE для запуска Jar и запустить отладку. Здесь это документация.

1
BullyWiiPlaza