2011-12-08 18 views
25

मैं ग्रहण में मेवेन परीक्षण डीबग करने की कोशिश कर रहा हूं। जब मैं Maven विकल्प maven.surefire.debug साथ परीक्षण लॉन्च किया, मैं इस त्रुटि मिलती है:मेवेन ग्रहण डीबग "जेडीडब्ल्यूपी ट्रांसपोर्ट dt_socket प्रारंभ करने में विफल रहा, TRANSPORT_INIT (510)"

ERROR: transport error 202: bind failed: Address already in use 
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) 
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:690] 
/bin/sh: line 1: 27500 Abort trap   

यह वही है, जब मैं अपने खोल में तू लांच डिबग करने की कोशिश की।

मैं Maven विकल्प forkMode जोड़ने की कोशिश की = कभी नहीं, और मुझे लगता है कि मैं maven.surefire.debug विकल्प के बिना नहीं है मेरी वेल्ड विरूपण साक्ष्य के साथ एक और त्रुटि मिलती है:

Error loading Weld bootstrap, check that Weld is on the classpath 

हालांकि, वेल्ड पर है मेरे क्लासपाथ

कोई विचार?

+3

मुझे समाधान मिला। डीबग के लिए उपयोग किया जाने वाला बंदरगाह पहले से ही उपयोग में था, शायद मैवेन की एक बग के कारण। Maven.surefire.debug का उपयोग करते समय, मैवेन एक बंदरगाह पर इंतजार कर रहा है। मैंने इसे एक बार मारा, और फिर मैवेन टेस्ट को फिर से लॉन्च करने के लिए पुनः प्रयास किया। समाधान खोला बंदरगाह बंद करना है (मैंने अपनी मशीन को पुनरारंभ किया है, लेकिन कम कट्टरपंथी समाधान हो सकता है ...) –

+1

आप इसे अपने स्वयं के समाधान के रूप में पोस्ट कर सकते हैं और फिर इसे एक दिन बाद स्वीकार कर सकते हैं। – Xonatron

उत्तर

23

एक प्रक्रिया एक पोर्ट पर ध्यान मारने के लिए:

यह आदेश सभी बंदरगाहों पर सुन प्रक्रियाओं में सूचीबद्ध करना चाहिए:

netstat -ano 

-o विकल्प प्रक्रिया आईडी प्रदर्शित करेगा।

आप एक * nix प्रणाली का उपयोग कर रहे हैं, तो आप के साथ थोड़ा और आगे परिष्कृत कर सकते हैं:

netstat -ano | grep <badport> 

आप इस प्रक्रिया आईडी है, तो आप के साथ इसे समाप्त कर सकते हैं:

विंडोज:

  • ओपन कार्य प्रबंधक, दृश्य> स्तंभ का चयन करें> पीआईडी ​​
  • साथ पीआईडी ​​स्तंभ
  • प्रक्रिया है और इसे मारने के लिए राइट क्लिक करें खोजें जोड़ने

अन्य:

kill <PID> 
+0

क्षमा करें, लेकिन -o विकल्प पहचाना नहीं गया है। मैं मैकोज़ 10.6 पर काम करता हूं। हालांकि, समाधान एक अच्छा विचार प्रतीत होता है। –

+0

मुझे लगता है कि आप ओएस एक्स पर 'sudo lsof -i -P' – lucrussell

+0

के साथ यह जानकारी प्राप्त करने में सक्षम हो सकते हैं आप सही हैं। सुडो lsof -i -P | grep ठीक काम करता है। धन्यवाद। –

4

Debug configuration पर जाएं ->Remote Java Application ->Connect टैब, Allow termination of remote JVM की जाँच करें।

फिर, जब आप, सर्वर/Maven पुनः आरंभ Debug perspective के पास जाकर read/stop बटन पर क्लिक करें .....

0

पर जोड़ने के लिए जा रहे हैं .. मैं वही समस्या पिछले सप्ताह था, जब डिबगिंग का उपयोग कर ग्रहण असंभव बना दिया गया था।

FATAL ERROR in native method: JDWP No transports initialized, 
jvmtiError=AGENT_ERROR_TRANSPORT_LOAD(196) 
ERROR: transport library not found: dt_socket 
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509) 
JDWP exit error AGENT_ERROR_TRANSPORT_LOAD(196): No transports initialized [../../../src/share/back/debugInit.c:690] 

अफसोस की बात है कि समाधान के बिना मैं संभवतः ऑनलाइन खोज सकता हूं।

समस्या यह साबित हुई कि किसी भी तरह फ़ायरवॉल ने मेरे जेआरई बिन में सभी डीएलएस हटा दिए ... (इसलिए dt_socket.dll पूरी तरह से गायब हो गया)।

पूरे जेआरई को पुनर्स्थापित करने में मदद मिली।

4

प्रश्न पूछने में काफी समय है लेकिन मुझे हाल ही में एक ही समस्या थी।

  1. ओपन कार्य प्रबंधक

  2. को मार डालो सभी "java.exe" प्रक्रिया

  3. पुन: लॉन्च mvn डिबग

आशा है कि यह मदद मिलेगी

0

का हल मैं परियोजना के ब्रेकपॉइंट्स को हटा रहा था! यदि आपके पास कई शाखाएं हैं और हाल ही में बदल गई हैं तो ग्रहण कुछ ब्रेकपॉइंट खो गया है।