Eclipse 3.7.2的包org.eclipse.debug.internal.ui.actions.context中缺少TerminateAction.java

时间:2014-01-07 10:05:30

标签: java eclipse eclipse-plugin eclipse-indigo

我们正在尝试将我的项目中的eclipse从3.2.2更新到3.7.2。并发现包TerminateAction.java中缺少org/eclipse/debug/internal/ui/actions/context。有人可以告诉我对于{3.7}的TerminateAction.java可能有什么选择。以及为什么它被改变了。

我发现了与终止和重新启动有关的错误:https://bugs.eclipse.org/bugs/show_bug.cgi?id=293109但没有找到TerminateAction.java

我真的很感激你的快速帮助。

更新 的 下面是引用TerminateAction.java的代码片段:

`IWorkbenchPage page = window.getActivePage();
if (page != null) {
 LaunchView view = (LaunchView) page.findView(IDebugUIConstants.ID_DEBUG_VIEW);
 if (view != null) {
    TerminateAction action = (TerminateAction) view.getAction("terminate");
    if (action != null) {
     action.contextChanged(view.getViewer().getSelection(), view);
        }
    }
}`

@Chandrayya G K: 这里contextChanged是属于类org.eclipse.debug.internal.ui.actions.context.AbstractDebugContextAction类的方法,所以我认为我不能在这里使用TerminateCommandAction,因为它正在扩展DebugCommandAction.java,但缺少该函数。

我们在哪里可以找到contextChanged()方法,或者我们可以继续创建我们自己的TerminateAction类,类似于较旧的类。

请建议任何替代解决方案。

由于

2 个答案:

答案 0 :(得分:2)

包名称中包含internal的Eclipse类仅供内部使用,因此如有更改或删除,恕不另行通知 - 请参阅Eclipse API Rules of Engagement

调试插件定义了command,标识为org.eclipse.debug.ui.commands.Terminate,听起来可能就是您想要的。尝试调用该命令。

更新

基本上,通过使用这个内部代码,你已经挖到了一个大洞。

AbstractDebugContextAction也是内置的,已被删除,contextChanged方法也是如此。 IAsynchronousTerminateAdapter接口使用的所有终止代码也已消失。看起来所有这些代码都被重构为使用较新的commandhandler范例而不是较旧的JFace Action

您应该能够使用org.eclipse.debug.ui.commands.Terminate调用新的IHandlerService命令,但您必须在当前选择等方面找出它所期望的内容。

答案 1 :(得分:0)

检查Eclipse 3.2.2 SDK javadoc是否弃用此类。我想是的。

在grep代码中搜索此类(TerminateAction)时,我找到了results like this。意味着这个类被折射并重命名为其他类。