Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse中单击红色停止按钮时优雅地关闭应用程序_Java_Eclipse_Ide_Terminate - Fatal编程技术网

Java 在Eclipse中单击红色停止按钮时优雅地关闭应用程序

Java 在Eclipse中单击红色停止按钮时优雅地关闭应用程序,java,eclipse,ide,terminate,Java,Eclipse,Ide,Terminate,我试图在Eclipse中单击“红方块终止”按钮时强制应用程序执行关闭挂钩。我意识到这个问题已经得到解决和解决 我已经基于Eclipse.org论坛实现了以下代码: import java.rmi.RemoteException; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.mod

我试图在Eclipse中单击“红方块终止”按钮时强制应用程序执行关闭挂钩。我意识到这个问题已经得到解决和解决

我已经基于Eclipse.org论坛实现了以下代码:

    import java.rmi.RemoteException;

    import org.eclipse.debug.core.DebugException;
    import org.eclipse.debug.core.ILaunch;
    import org.eclipse.debug.core.model.IProcess;
    import org.eclipse.debug.core.model.IStreamsProxy;

    public class JavaProcessDecorator implements IProcess {


    private IProcess p;



    public JavaProcessDecorator(IProcess p) {
        this.p = p;
    }

    private boolean sigkill = false;

    @SuppressWarnings("rawtypes")

    @Override public Object  getAdapter(Class arg)               
    {
        return p.getAdapter(arg);
    }



    @Override public ILaunch getLaunch()                          
    {

        return p.getLaunch(); 

    }


    @Override public IStreamsProxy getStreamsProxy()                    
    {   

        return p.getStreamsProxy(); 

    }


    @Override public void setAttribute(String s1, String s2)   
    {        

        p.setAttribute(s1, s2);     
    }

    @Override public void terminate() throws DebugException    

    {
        if (!sigkill) {

            try {
                IDebugIService cs = DirmiServer.INSTANCE.getRemote("main", IDebugIService.class);
                if(cs != null) cs.modelEvent(new TerminateRequest());
            } catch (RemoteException e) { }
            this.sigkill = true;
        } else p.terminate();

    }



    @Override
    public boolean canTerminate() {
        // TODO Auto-generated method stub
        return false;
    }



    @Override
    public boolean isTerminated() {

        return p.isTerminated();
    }



    @Override
    public String getLabel() {

        return p.getLabel();
    }



    @Override
    public String getAttribute(String key) {

        return p.getAttribute(key);
    }



    @Override
    public int getExitValue() throws DebugException {

        return p.getExitValue();


    }

   }
我已经下载了DirmiServer和Cojen JAR,但是Eclipse在以下两行中抱怨:

 IDebugIService cs = DirmiServer.INSTANCE.getRemote("main", IDebugIService.class);
 if(cs != null) cs.modelEvent(new TerminateRequest());
“IDebugIService”、“Dirmiser”、“IDebugIService”和“TerminateRequest”
无法解析为类型

我做错了什么


谢谢

您是否已将JAR添加到插件并将其包含在
捆绑类路径中?@greg-449将JAR添加到插件并添加到
捆绑类路径
是什么意思?我导入了以下JAR:
import java.rmi.RemoteException
import org.cojen.*
导入org.cojen.dirmi.*我假设您正在编写一个Eclipse插件(您显示的代码只在插件中工作)。要在插件中使用的JAR必须是插件的一部分,并且必须位于plug-in MANIFEST.MF中的插件包类路径中。或者,它们可以位于不同的插件中,并由MANIFEST.MF中的Require Bundle或Import包引用。您不能做的只是引用一些外部jar。例如,见