Java 进程在Eclipse调试器中启动后挂起

Java 进程在Eclipse调试器中启动后挂起,java,eclipse,debugging,Java,Eclipse,Debugging,我在使用Eclipse调试器时面临以下问题。我直接从Eclipse以调试模式启动JBoss 5.1(这个过程几乎整天都在运行,没有重新启动),有时我想用客户机应用程序(Swing+OSGi)启动新的调试Sesion或事件调试,一些JUnit测试Eclipse会启动这个过程,但这个新过程会立即挂起。当我将透视图更改为debug时,我可以看到两个进程—JBoss运行时没有出现问题,但新进程已挂起—控制台输出是清晰的,进程显示挂起线程的Eclipse图标。有时选择这个进程并按下绿色的“恢复”按钮会有所

我在使用Eclipse调试器时面临以下问题。我直接从Eclipse以调试模式启动JBoss 5.1(这个过程几乎整天都在运行,没有重新启动),有时我想用客户机应用程序(Swing+OSGi)启动新的调试Sesion或事件调试,一些JUnit测试Eclipse会启动这个过程,但这个新过程会立即挂起。当我将透视图更改为debug时,我可以看到两个进程—JBoss运行时没有出现问题,但新进程已挂起—控制台输出是清晰的,进程显示挂起线程的Eclipse图标。有时选择这个进程并按下绿色的“恢复”按钮会有所帮助,有时我不得不用“终止删除”来终止这个进程。当我再次尝试运行此流程时,我有时会在相同的情况下运行,有时会毫无问题地运行新流程

真正奇怪的是,当eclipse“挂起”新的客户端应用程序进程,我在调试过程中杀死JBoss进程时,第二个挂起的进程突然运行。我认为,这两个进程在某种“死锁”情况下运行,但我不知道如何解决这个问题

我不知道,这个问题的原因是什么。。。
我的环境:Eclipse 4.3.2,Java 1.7.0_21-64位

此程序可能会帮助您了解您的情况:

class Solution {
    public static ListNode reverseKGroup(ListNode head, int k) {
        ListNode dummyHead = new ListNode(0);
        dummyHead.next = head;
        ListNode prev = dummyHead, cur = dummyHead;
        while (cur != null) {
            for (int i = 0; i < k; i++) {
                if (cur == null || cur.next == null) return dummyHead.next;
                cur = cur.next;
            }
            ListNode nxt = prev.next;
            prev.next = reverse(prev.next, cur.next);
            prev = nxt;
            System.out.println(prev);
            cur = nxt;
        }
        return dummyHead.next;
    }

    private static ListNode reverse(ListNode head, ListNode tail) {
        if (head == tail || head.next == tail) return head;
        ListNode prev = head, cur = head.next;
        while (cur != tail) {
            ListNode nxt = cur.next;
            cur.next = prev;
            //System.out.println("cur.next:" + cur.next);
            prev = cur;
            //System.out.println("prev:" + prev);
            cur = nxt;
        }
        //head.next = tail;
        return prev;
    }

    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);   
        l1.next = new ListNode(2);  
        l1.next.next = new ListNode(3);  
        l1.next.next.next = new ListNode(4);
        l1.next.next.next.next= new ListNode(5);

        System.out.println(reverseKGroup(l1, 3));
    }
}

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }

    public String toString(){
        String retVal = "";
        ListNode n = this;
        while(n!=null){
            retVal += n.val +" ";
            n = n.next;
        }
        return retVal;
    }
}
类解决方案{
公共静态ListNode反向组(ListNode头,int k){
ListNode dummyHead=新ListNode(0);
dummyHead.next=头;
ListNode prev=dummyHead,cur=dummyHead;
while(cur!=null){
for(int i=0;i
当您启动调试器并尝试调试prev的值时,进程将被挂起