Eclipse RSE:如何知道该命令已经完成

时间:2015-02-19 15:01:27

标签: java eclipse ssh eclipse-plugin openssh

我在E3.3.2版本中有工作的eclipse插件(内部)。现在我应该将eclipse升级到E4.3.2。在E3.3.2中,我使用远程系统资源管理器(RSE)v_2.0.3。一切正常。 但在使用RSE v3.0.7的E4.3.2中,我遇到了问题。 在98%我无法完成我的任务(没有完成远程shell的事件)以及"超时"我看到超时异常',但所有命令都已成功完成(按日志)。

我有一个ScriptRunnerJob类,可以扩展org.eclipse.core.runtime.jobs.Job并实施org.eclipse.core.runtime.jobs.IJobChangeListener

private class ShellEventsListener implements ISystemResourceChangeListener {
    public void systemResourceChanged(ISystemResourceChangeEvent event) {
        if (event.getType() == ISystemResourceChangeEvents.EVENT_REFRESH) {
            Object parent = event.getParent();
            if (parent instanceof IRemoteCommandShell) {
                ScriptRunnerJob scriptRunner = findScriptByShell((IRemoteCommandShell) parent);
                if (scriptRunner != null) {
                    scriptRunner.refreshScriptOutput();
                }
            }
        } else if (event.getType() == ISystemResourceChangeEvents.EVENT_COMMAND_SHELL_FINISHED) {
            Object source = event.getSource();
            if (source instanceof IRemoteCommandShell) {
                ScriptRunnerJob scriptRunner = findScriptByShell((IRemoteCommandShell) source);
                if (scriptRunner != null)
                    scriptRunner.notifyShellFinished();
            }
        } 
    }
}

当我收到事件EVENT_COMMAND_SHELL_FINISHED时 - 我的脚本已成功完成,但很少发生。我几天都在处理这个问题并且没有任何想法。我不确定RSE中的这个问题,但我不知道它为什么会发生。

在服务器OpenSSH v1.4.5上

1 个答案:

答案 0 :(得分:0)

修正了org.eclipse.rse.internal.subsystems.shells.servicesubsystem.OutputRefreshJob.java 添加输出验证。没有改变 - 任务应该完成。