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

<p>я нахожусь в довольно странной позиции (с моей точки зрения новичка в java):</p><ol> <li><p>используя eclipse, я написал «java-программу» (некоторые файлы .java с классами в), которая, по сути (пакетно), читает текстовый файл * .csv, «оценивает» его содержимое и записывает результаты в текстовый файл * \_out.csv. чтобы найти входной файл, он использует «средство выбора файлов» (пример можно найти здесь: <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html">http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html</a> )</p></li> <li><p>я отладил весь код и, используя отладчик, <strong>он работает</strong>.</p></li> <li><p>я запустил код (основной класс, который вызывает все остальные по порядку) и <strong>он работает</strong>, <em>в то время как в eclipse</em>.</p></li> <li><p>я экспортировал все содержимое проекта в файл «runnable jar».</p></li> </ol><p>заметьте, что, если выбирать файл отдельно, это, в основном, «пакет», который читает и пишет: пользовательский интерфейс практически отсутствует. находясь в eclipse, я показал некоторые внутренние результаты, используя что-то вроде "<em>if (debug) system.out.print (" что-то напечатать ");</em>", обеспечивающее установку "<em>debug</em>" true в то время как отладка и ложь в производственной среде.</p><p>все из перечисленного <strong>сработало!</strong></p><p>теперь, запустив исполняемый файл jar (дважды щелкните файл jar в win/xp), <strong>я вижу</strong> средство выбора файлов и могу его использовать, но после выбора входного файла ... <em>ничего далее</em>: (без пользовательского интерфейса) я не знаю, был ли файл прочитан, я не вижу ни одного сгенерированного выходного файла, и у меня даже нет «консоли», чтобы вывести какое-либо промежуточное сообщение отладки, чтобы увидеть если jar работает, даже если я реэкспортирую его с переменной отладки, установленной в true.</p><p>есть ли способ «отладки во время выполнения» запущенного фляги (например, msgbox от vb или что-то другое)? какой-то "файл журнала" я могу "включить" или посмотреть? (очевидно, поскольку мой jar-файл не записывает файл результатов, я просто не могу попытаться написать также * .log) я также должен сказать, что я просто <strong>не могу</strong> установить иную, кроме eclipse, на свою машину (и мне просто повезло, что она работала), так что никаких обычных инструментов разработчика, утилит и других полезных вещей нет.</p>

<p>даже если это исполняемый файл jar, вы все равно можете запустить его из консоли - откройте окно терминала, перейдите в каталог, содержащий jar, и введите «java -jar yourjar.jar». он будет работать в этом окне терминала, и там будут отображаться выходные данные sysout и syserr, включая трассировки стека из необработанных исключений. убедитесь, что для вашей отладки установлено значение true при компиляции. и удачи.</p><hr><p>просто подумал о другом - если вы работаете на win7, у него часто возникают проблемы с правами доступа пользовательских приложений, записывающих файлы в определенные каталоги. убедитесь, что каталог, в который вы записываете свой выходной файл, является тем, для которого у вас есть разрешения.</p><p>в будущем проекте, если он достаточно большой, вы можете использовать одно из стандартных средств ведения журнала для вывода «отладки»; тогда будет легко (ier) перенаправить его в файл вместо зависимости от наличия консоли. но для такой небольшой работы это должно быть хорошо.</p>

<p> <a href="http://www.eclipsezone.com/eclipse/forums/t53459.html">http://www.eclipsezone.com/eclipse/forums/t53459.html</a> </p><p>в основном запустите его с:</p><pre><code>-xdebug -xrunjdwp:transport=dt\_socket,server=y,suspend=y,address=1044 </code></pre><p>приложение при запуске будет ждать, пока вы не подключитесь из другого источника.</p>

<p>вы можете активировать возможность отладки jvm при запуске команды <code>java</code> со специальной опцией:</p><pre><code>java -agentlib:jdwp=transport=dt\_socket,address=8000,server=y,suspend=y -jar path/to/some/war/or/jar.jar </code></pre><p>при запуске <code>jar.jar</code> в командной строке:</p><ul> <li>поместите <em>this</em> экземпляр jvm в роль сервера (<code>server=y</code>), прослушивающего порт 8000 (<code>address=8000</code>)</li> <li>написать <code>listening for transport dt\_socket at address: 8000</code> в <code>stdout</code> и</li> <li>затем приостановите приложение (<code>suspend=y</code>), пока не подключится какой-либо отладчик. в этом сценарии отладчик действует как <em>client</em>.</li> </ul><p>общие варианты выбора отладчика:</p><ul> <li>eclipse debugger: в <em>run</em> -> <em>debug configurations ...</em> -> выберите <em>remote java application</em> -> нажмите кнопку <em>новая конфигурация запуска</em>. укажите произвольное <em>имя</em> для этой конфигурации отладки, <em>тип подключения: стандартное (socket attach)</em> и в качестве <em>свойства подключения</em> записи <em>host: localhost</em>, <em>порт: 8000</em> , <em>примените</em> изменения и нажмите <em>debug</em>. в тот момент, когда eclipse debugger успешно подключился к jvm, должен начаться запуск <code>jar.jar</code>.</li> <li>инструмент командной строки <em>jdb</em>: запустите его с помощью <code>jdb -connect com.sun.jdi.socketattach:port=8000</code></li> </ul>

<p>с помощью <a href="https://www.jetbrains.com/idea/"><code>intellij idea</code></a> вы можете создать конфигурацию времени исполнения <code>jar application</code>, выбрать <code>jar</code>, источники, <code>jre</code> для запуска <code>jar</code> и запустить отладку. <a href="https://www.jetbrains.com/help/idea/run-debug-configuration-jar.html">здесь</a> это документация.</p>