Eclipse: как отладить программу на Java в виде файла.jar?
Я использую ant
для создания файлов.jar в Eclipse. Работает отлично.
У меня есть файл.jar, над которым я работаю, который ожидает, что код находится в файле.jar (он ищет файлы.properties в том же каталоге, что и файл.jar) - стандартные Eclipse "Run" и "Debug" меню выполняют main()
метод указанного класса Java... но они делают это из каталога, содержащего файлы скомпилированного класса, а не из файла jar. Есть ли способ изменить это поведение, чтобы Eclipse запускал код из соответствующего файла.jar?
(Мой обходной путь сейчас заключается в том, чтобы запустить файл.jar извне, с приостановленным ожиданием отладчика, согласно ответу Дэйва Рэя на один из моих других вопросов.)
4 ответа
Да, вы можете создать кастомRun Configuration
":
То естьJava Application
"один, с:
Classpath
вкладка очищена от содержимого по умолчанию (.class
каталог) и с добавленной банкойSource
вкладка с содержимым по умолчанию (должен ссылаться наsrc
каталог проекта)
Одна такая конфигурация может быть запущена или отлажена.
(Пример пользовательской конфигурации с банками в качестве пользовательских записей)
Вы можете использовать удаленную отладку, запустив свой jar как этот
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar yourJar.jar
И затем подключение от вашей IDE к этому порту
Я только что нашел следующую ссылку, которая описывает всю процедуру для удаленной отладки Java-фляги.
Удаленная отладка приложений Java с помощью Eclipse
Основными частями являются:
Целевая ВМ действует как сервер отладки
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address="8000" -jar test.jar
Целевая ВМ действует как клиент отладки
java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y -jar test.jar
В зависимости от того, как вы запускаете целевой vm, клиент или сервер, вы должны настроить Eclipse по-разному.
Настройка Eclipse, если вы запускаете целевой vm как клиент
Настройка Eclipse, если вы запускаете целевой vm как сервер
В статье также дается осторожное введение в тему.
Я хотел бы попытаться сделать код более надежным, настроить расположение файла свойств или просто загрузить его из пути к классам. Затем вы можете просто добавить файл свойств в путь к классу eclipse. Проблема соведла!