有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Eclipse不会退出我的插件

我正在开发自己的Eclipse插件,遇到了一个非常奇怪的行为。在某些非常特殊的情况下,当我关闭工作台时,Eclipse不会退出。它一直挂着,直到我结束这个过程。当通过PDE运行和作为常规安装运行时,会发生这种情况

很难提供更多细节,我知道这是一个非常笼统的问题。然而,我想知道是否有人遇到过这种行为,并能分享解决方案

谢谢。 兹维基

另外,我在退出工作台后附加所有运行线程的堆栈跟踪。也许会有什么东西冒出来。此跟踪是通过在调试模式下运行IDE、在IDE冻结后将其挂起并复制所有线程树来实现的

Test1 [Eclipse Application] 
org.eclipse.equinox.launcher.Main at localhost:54840 (Suspended)    
    Daemon System Thread [Finalizer] (Suspended)    
        Object.wait(long) line: not available [native method]   
        ReferenceQueue<T>.remove(long) line: 120    
        ReferenceQueue<T>.remove() line: 136    
        Finalizer$FinalizerThread.run() line: 159   
    Daemon System Thread [Reference Handler] (Suspended)    
        Object.wait(long) line: not available [native method]   
        Reference$Lock(Object).wait() line: 474 
        Reference$ReferenceHandler.run() line: 116  
    Thread [main] (Suspended)   
    Daemon System Thread [Signal Dispatcher] (Suspended)    
    Daemon Thread [Thread-0] (Suspended)    
        OS.CFRunLoopRunInMode(int, double, boolean) line: not available [native method] 
        Display.sleep() line: 3902  
        IDEWorkbenchAdvisor(WorkbenchAdvisor).eventLoopIdle(Display) line: 364  
        Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 2383    
        Workbench.runUI() line: 2346    
        Workbench.access$4(Workbench) line: 2198    
        Workbench$5.run() line: 493 
        Realm.runWithDefault(Realm, Runnable) line: 288 
        Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 488    
        PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149   
        IDEApplication.start(IApplicationContext) line: 113 
        EclipseAppHandle.run(Object) line: 193  
        EclipseAppLauncher.runApplication(Object) line: 110 
        EclipseAppLauncher.start(Object) line: 79   
        EclipseStarter.run(Object) line: 386    
        EclipseStarter.run(String[], Runnable) line: 179    
        NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]  
        NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39  
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25  
        Method.invoke(Object, Object...) line: 585  
        Main.invokeFramework(String[], URL[]) line: 549 
        Main.basicRun(String[]) line: 504   
        Main.run(String[]) line: 1236   
        Main.main(String[]) line: 1212  
    Daemon Thread [State Data Manager] (Suspended)  
        Thread.sleep(long) line: not available [native method]  
        StateManager.run() line: 297    
        Thread.run() line: 613  
    Daemon Thread [Framework Event Dispatcher] (Suspended)  
        Object.wait(long) line: not available [native method]   
        EventManager$EventThread(Object).wait() line: 474   
        EventManager$EventThread.getNextEvent() line: 377   
        EventManager$EventThread.run() line: 317    
    Daemon Thread [Start Level Event Dispatcher] (Suspended)    
        Object.wait(long) line: not available [native method]   
        EventManager$EventThread(Object).wait() line: 474   
        EventManager$EventThread.getNextEvent() line: 377   
        EventManager$EventThread.run() line: 317    
    Thread [Worker-0] (Suspended)   
        Object.wait(long) line: not available [native method]   
        WorkerPool.sleep(long) line: 185    
        WorkerPool.startJob(Worker) line: 217   
        Worker.run() line: 51   
    Daemon Thread [Java indexing] (Suspended)   
        Object.wait(long) line: not available [native method]   
        IndexManager(Object).wait() line: 474   
        IndexManager(JobManager).run() line: 371    
        Thread.run() line: 613  
    Thread [Worker-1] (Suspended)   
        Object.wait(long) line: not available [native method]   
        WorkerPool.sleep(long) line: 185    
        WorkerPool.startJob(Worker) line: 217   
        Worker.run() line: 51   
    Thread [Worker-2] (Suspended)   
        Object.wait(long) line: not available [native method]   
        WorkerPool.sleep(long) line: 185    
        WorkerPool.startJob(Worker) line: 217   
        Worker.run() line: 51   

共 (1) 个答案

  1. # 1 楼答案

    对不起打扰大家了。。。有问题了

    我的问题很简单:我的一个操作处理程序在Dispose方法中抛出了一个异常。这会导致整个工作区挂起