我在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上
答案 0 :(得分:0)
修正了org.eclipse.rse.internal.subsystems.shells.servicesubsystem.OutputRefreshJob.java
添加输出验证。没有改变 - 任务应该完成。