2013-09-04 3 views
2

Может ли eclipse отлаживать запуск двух программ в проекте? Я имею в виду, что у меня есть две программы с методом public static void main(). Можно ли их отлаживать одновременно? Я пытался это сделать. Есть две консоли дисплея. В окне отладки есть два потока. Вы можете щелкнуть нить, чтобы решить, какую программу вы хотите отлаживать. Но результат для запуска или отладки программы таким образом кажется другим, когда вы запускаете или отлаживаете их отдельно? Есть ли у кого-то подобный опыт?Может ли eclipse отлаживать или запускать две программы в проекте

enter image description here

ответ

3

Да, вы можете запускать и отлаживать двух или более программ Java, в то же время в затмении без них влияющих друг с другом. Фактически вы можете запускать и отлаживать один и тот же основной метод несколько раз без проблем. Причиной этого является то, что каждый раз, когда вы нажимаете run или debug, создается новый экземпляр jvm и загружается текущий набор файлов классов. Следует отметить, что если обе программы полагаются на какой-то общий ресурс, они могут косвенно влиять друг на друга. Не видя своего кода, трудно точно сказать, почему вы получаете разные результаты при одновременном запуске нескольких программ.

+0

Я пытаюсь динамически модифицировать класс, который уже загружен в jvm. Сначала запустите целевую программу и запустите jvm (например, jvm1). Затем запустите другую программу, чтобы прикрепить агента к jvm1, чтобы изменить класс, загруженный в jvm1, и он запускает jvm2. Во всяком случае, если я запустил эти две программы в eclipse в одном projcet, я получил 'retransformClasses()', который будет запущен дважды, и второй раз вызовет ошибку ('переопределение переопределения класса '), чтобы позвонить ему. Но если я запускаю целевую программу в окне команд Windows, а другой - в eclipse. Я ничего не получил. Не должно быть разницы. Они используют один и тот же jre. –

+0

Бит вне моей области, но при запуске в режиме отладки eclipse будет прикреплять собственный отладочный агент, используя флаг -agentlib. Если вы запустили программу из командной строки, это не сделало бы этого явно. Это может быть причиной ваших проблем? Если вы хотите увидеть точную команду java, используемую eclipse для запуска вашей программы, используйте проводник процессов в Windows или что-то подобное в Linux. Затем вы можете сравнить это с тем, как вы запускаете его в командной строке. – jimjim

+0

Вы имели в виду, что eclipse присваивал агент по умолчанию, хотя я не добавлял параметр отладки вручную? –

Смежные вопросы