Java 在Eclipse中单击红色停止按钮时优雅地关闭应用程序
我试图在Eclipse中单击“红方块终止”按钮时强制应用程序执行关闭挂钩。我意识到这个问题已经得到解决和解决 我已经基于Eclipse.org论坛实现了以下代码: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
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。例如,见