как я могу отладить jar во время выполнения?
Я нахожусь в довольно странном положении (с моей точки зрения java-новичка):
С помощью Eclipse я написал " java-программу "(some .java файлы с классами в), который по существу (пакетно) читает текст *.csv-файл, "оценивает" его содержимое и записывает результаты в *_out.текстовый файл csv. Чтобы найти входной файл, он использует "file chooser" (получил образец отсюда: http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html)
Я отладил весь код и, используя отладчик, он работает .
Я запустил код (основной класс, который вызывает все остальные последовательно) и он работает, находясь в затмении .
Я экспортировал все содержимое проекта в файл" runnable jar".
Обратите внимание, что, кроме выбора файлов, это в основном "пакет", который читает и записывает: почти нет пользовательского интерфейса вообще. В то время как в Eclipse я показал некоторые внутренние результаты, используя что-то например, " if(debug) System.из.print ("что-то печатать"); "предоставление установить" debug " TRUE при отладке и FALSE в рабочей среде.
Все вышеперечисленное сработало!
Теперь, запустив запускаемый jar (дважды щелкните по файлу jar, в Win / XP), я вижу средство выбора файлов, и я могу использовать его, но после выбора входного файла... больше ничего : (не имея пользовательского интерфейса) я не знаю, был ли файл прочитан, я не вижу любой сгенерированный выходной файл, и у меня даже нет "консоли", чтобы перечислить любое промежуточное сообщение отладки, чтобы увидеть, работает ли jar, даже если я повторно экспортирую его с переменной отладки, установленной в TRUE.
Существует ли способ "отладки во время выполнения" работающего jar (например, MsgBox VB или что-то другое)? какой-то" лог-файл", который я могу" включить " или посмотреть? (очевидно, поскольку мой jar не записывает файл результата, я просто не могу попробовать написать *.бревно тоже)
Я также должен сказать, что я просто не могу установить, кроме Eclipse на моей машине (и просто повезло, что она запустилась), поэтому никаких обычных инструментов разработчика, утилит и прочих полезных вещей.
4 ответов:
Несмотря на то, что это управляемый jar, вы все равно можете запустить его из консоли-откройте окно терминала, перейдите в каталог, содержащий jar, и введите "java-jar yourJar.кувшин". Он будет работать в этом окне терминала, и там появятся выходные данные sysout и syserr, включая трассировки стека из необработанных исключений. Убедитесь, что для вашей отладки установлено значение true. И удачи вам.
Просто подумал о чем-то другом-если вы находитесь на Win7, у него часто возникают проблемы с разрешениями пользователя приложения, записывающие файлы в определенные каталоги. Убедитесь, что каталог, в который вы записываете выходной файл, является каталогом, для которого у вас есть разрешения.
В будущем проекте, если он достаточно большой, вы можете использовать один из стандартных средств ведения журнала для вывода "debug"; тогда будет легко перенаправить его в файл, а не в зависимости от наличия консоли. Но для такой маленькой работы, как эта, это должно быть прекрасно.
Http://www.eclipsezone.com/eclipse/forums/t53459.html
В основном запустите его с помощью:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044Приложение при запуске будет ждать, пока вы не подключитесь из другого источника.
Вы можете активировать отладочные возможности JVM при запуске команды
javaс помощью специальной опции:java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar path/to/some/war/or/jar.jarЗапуск
jar.jarтаким образом в командной строке будет:
- поместите Этот экземпляр JVM в роль сервера (
server=y), прослушивающего порт 8000 (address=8000)- напишите
Listening for transport dt_socket at address: 8000вstdoutи- затем приостановите приложение (
suspend=y), пока не подключится какой-нибудь отладчик. Отладчик действует как клиент в этом сценарий.Общие параметры выбора отладчика:
- Отладчик Eclipse: В Разделе Выполнить -> Отладочные Конфигурации... - > выберите удаленное приложение Java - > нажмите кнопку новая конфигурация запуска . Укажите произвольное имя для этой конфигурации отладки, тип соединения: стандартный (Socket Attach) и как свойства соединения записи хост: localhost, порт: 8000 . примените изменения и нажмите кнопкуотладка . В тот момент, когда отладчик Eclipse успешно подключится к JVM,
jar.jarдолжен начать выполнение.- средство командной строки jdb : запустите его с помощью
jdb -connect com.sun.jdi.SocketAttach:port=8000
С
IntelliJ IDEAВы можете создать конфигурациюJar Applicationсреды выполнения, выбратьJAR, источники,JREдля запускаJarи начать отладку. здесь находится документация.
Comments