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



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




  1. С помощью Eclipse я написал " java-программу "(some .java файлы с классами в), который по существу (пакетно) читает текст *.csv-файл, "оценивает" его содержимое и записывает результаты в *_out.текстовый файл csv. Чтобы найти входной файл, он использует "file chooser" (получил образец отсюда: http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html)



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



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



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



Обратите внимание, что, кроме выбора файлов, это в основном "пакет", который читает и записывает: почти нет пользовательского интерфейса вообще. В то время как в Eclipse я показал некоторые внутренние результаты, используя что-то например, " if(debug) System.из.print ("что-то печатать"); "предоставление установить" debug " TRUE при отладке и FALSE в рабочей среде.



Все вышеперечисленное сработало!



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



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

1066   4  

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

    Ничего не найдено.