Как я могу отлаживать банку во время выполнения?
Я вхожу в довольно странную позицию (с моей точки зрения 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, на моей машине (и просто повезло, что он запускался), поэтому никаких обычных инструментов разработчика, утилит и других полезных вещей.
Ответы
Ответ 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
и начать отладку. Вот документация.