java - Eclipse 不会因我的插件而退出

标签 java eclipse eclipse-pde

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

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

谢谢。 兹维基

PS。我在工作台退出后附加所有正在运行的线程的堆栈跟踪。也许会弹出一些东西。此跟踪是通过在 Debug模式下运行 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   

最佳答案

抱歉打扰大家...有问题了。

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

关于java - Eclipse 不会因我的插件而退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/618716/

相关文章:

java - 在一框中添加多个不同尺寸的面板

eclipse - 通过 Eclipse 在 Perforce 中对文件进行小的本地编辑的正确方法是什么?

基于默认 Java 内容辅助结果的 Eclipse 自定义内容辅助

java - 构造函数 Time_Class_sub(int, int, int) 未定义

Java 等待 JFrame 完成

c - 在 Eclipse 中编译简单的 HDF5 示例时获取 ‘undefined reference to’

java - Eclipse 插件 : Creating a dynamic menu and corresponding handler?

eclipse - import org.eclipse 无法解析

java - 找不到操作或结果

c++ - 在 Eclipse 中使用管道