Eclipse удаленная отладка .jar-файлов внутри большого Java-приложения - PullRequest
0 голосов
/ 30 октября 2018

Большинство вопросов, связанных с удаленной отладкой, относятся ко всему java-приложению, из которого у вас есть код в вашей IDE.

В этом случае у меня нет доступа к полному приложению, только к фрагментам кода, файлам .jar, которые впоследствии встраиваются в более крупное приложение, которое в конечном итоге вызывает их и выполняет их код.

В отличие от большого приложения, эти файлы .jar, которые я разрабатываю, не содержат метод:

public static void main(string[] args)

.jar-файлы реализуют интерфейс процессора Camel, который вызывается, когда для конфигурации требуется определенный фрагмент кода.

Я пытаюсь настроить удаленную отладку eclipse только для встроенных файлов .jar. Это означает, что как только код файла .jar будет запущен, затмение IDE начнет процесс отладки.

Что я пробовал до сих пор:

Я попытался запустить файл .jar в режиме отладки:

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y -jar mycode.jar

После этого начинается:

Listening for transport dt_socket at address: 8000

Хотя, как указано выше, это не полное приложение Java, и как только я пытаюсь подключить к нему удаленную конфигурацию в Eclipse, я получаю сообщение об ошибке:

no main manifest attribute, in mycode.jar

как уже говорилось, это имело смысл для меня, потому что у меня нет основного класса.

Теперь можно ли отладить файл .jar только при его вызове, даже если отсутствует основной класс?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я вижу четыре замечания:

1) Если у вас нет кода, вы не можете отлаживать внутри JARS. Вы можете декомпилировать JAR и попытаться отладить. См. Как мы можем отладить файл, который находится внутри файла Jar

2) Конечно, вы можете отлаживать без основного метода, если ваше приложение не является автономным настольным приложением (веб-служба, приложение на основе очереди и т. Д.). В этом случае вы должны вызвать службу, и будет вызван (известный IDE) код, позволяющий отладку. Это применимо, только если у вас есть полный код проекта, который может быть частью более крупного приложения.

3) Если у вас есть только куски кода (функции или некоторые классы), вы можете создать модульный тест (с помощью JUnit или другого программного обеспечения) или основной метод, устанавливающий ВСЕ НЕОБХОДИМЫЕ значения, чтобы получить правильные значения. программный поток. Затем выполнение модульного теста или отладки может помочь.

4) --Xdebug разрешает удаленную отладку JVM, а не отладку кода. Означает, что вы не можете остановиться в блоках кода, но в основном позволяет проверять переменные, характеристики производительности и многое другое.

0 голосов
/ 30 октября 2018

Если честно, я не думаю, что это возможно. Если вы хотите знать, что ваш верблюжий процессор работает правильно, напишите Unit Tests. Junit - хорошая основа для этого: https://junit.org/junit5/

...