web-dev-qa-db-fra.com

Impossible de déboguer en Java avec Eclipse

J'essaie de déboguer une application Java simple sur ma machine en utilisant Eclipse comme IDE. Lorsque j'essaie de déboguer l'application en entrant dans la perspective de débogage, je définis un point d'arrêt et lance le débogage. En quelques secondes, la fenêtre suivante: 

Launching unicodeRead has encountered a problem. Cannot connect to VM

Le message vidé sur la console est le suivant: 

ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:708]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)  

Comment puis-je corriger cela? Pourquoi cela arrive-t-il?

20
Sriram

Je viens d'avoir le même problème.

Hier, tout a bien fonctionné, maintenant plus rien - la même erreur que vous avez donnée. J'ai découvert que les administrateurs du réseau avaient apporté des modifications entre-temps. Quelques trucs de pare-feu. Le problème est qu’Eclipse essaie d’établir une connexion avec la machine virtuelle Java au niveau "localhost" (et sur un port aléatoire). Quand j'ai essayé de faire un ping sur localhost (ou 127.0.0.1), j'ai eu ceci:

C:\Windows\system32>ping 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.

et

C:\Windows\system32>ping localhost
Ping request could not find Host localhost. Please check the name and try again.

Il semble que, dans certains cas, le DNS soit censé résoudre ce problème, et si le pare-feu empêche les demandes d’hôte local adressées au DNS, des ruptures de commandes. Je devais modifier le fichier hosts et supprimer les commentaires des lignes suivantes, je ne pouvais donc plus me fier au DNS pour cela:

# 127.0.0.1       localhost
# ::1             localhost

Bien qu'il soit écrit que les modifications apportées au fichier hosts prennent effet immédiatement, je pense que certains processus ont bloqué cette opération et que le redémarrage était nécessaire dans mon cas. Après cela, tout a encore fonctionné.

24
gonadarian

On dirait le même problème que ici . Un redémarrage du PC a résolu le problème ici. Je n'ai pas trouvé d'autres solutions.

4
Maza89

C'est très simple, il suffit de faire les modifications suivantes dans le fichier Eclipse.ini.

-vm
binary\com.Sun.Java.jdk.win32.x86_1.6.0.u43\jre\bin\javaw.exe
2
Calix

Je voyais une erreur en utilisant le format -X:

Java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

L'erreur a disparu lorsque je suis passé au nouveau format:

Java -agentlib:jdwp=transport=dt_socket,server=y,address=4000,suspend=n myapp
1
user674669

Mon cas est que j'ai un groupe de domaines se référer à 127.0.0.1 dans le fichier hosts, comme ceci:

127.0.0.1 localhost domian1.local domain2.local domain3.local

un jour, j'ai ajouté un autre nouveau domaine pour faire référence à 127.0.0.1. Par erreur, j'ai mis le domaine devant "localhost", comme ceci:

127.0.0.1 domain4.local localhost domian1.local domain2.local domainx.local

Après cela, j'ai toujours eu une fenêtre d'alerte dans Eclipse lors du débogage:

Impossible de se connecter à la VM com.Sun.jdi.connect.TransportTimeoutException

En console:

ERREUR: erreur de transport 202: échec de la connexion: connexion refusée ERREUR: JDWP: Echec de l'initialisation du transport via localhost: 50470, tentative de localhost via 127.0.0.1:50470 ERREUR FATAL dans la méthode native: JDWP Aucun transport initialisé, jvmtiError = AGENT_ERROR_TRANSPORT_INIT (197) ERREUR: erreur de transport 202: échec de la connexion: connexion refusée ERREUR: Echec de l'initialisation du transport JDWP dt_socket, TRANSPORT_INIT (510) Erreur de sortie JDWP AGENT_ERROR_TRANSPORT_INIT (197): aucun transport initialisé [../../../src/share/back/debugInit.c:690]

La solution est de garder "localhost" à la première position tout le temps.

127.0.0.1 localhost domian1.local domain2.local domainx.local domain4.local

0
Willie Z

Ce qui a été résolu pour moi, c’est de supprimer le dossier domain1 entier du dossier domain du dossier principal glassfish. Eclipse vous demandera de recréer un domaine, puis tout fonctionnera à nouveau.

0
Carlos ABS