Подтвердить что ты не робот

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

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

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

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

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

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

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

ВСЕ из приведенных выше отработано!

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

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

4b9b3361

Ответ 1

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


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

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

Ответ 2

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

В основном запустите его с помощью

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

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

Ответ 3

Вы можете активировать функцию отладки 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), а в качестве свойств подключения - данные Host: localhost, Port: 8000. Примените изменения и нажмите "Отладка". На данный момент Eclipse Debugger успешно подключен к JVM, jar.jar должен начать выполнение.
  • Инструмент командной строки jdb: запустите его с помощью jdb -connect com.sun.jdi.SocketAttach:port=8000

Ответ 4

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