我们正在尝试将我的项目中的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
类,类似于较旧的类。
请建议任何替代解决方案。
由于
答案 0 :(得分:2)
包名称中包含internal
的Eclipse类仅供内部使用,因此如有更改或删除,恕不另行通知 - 请参阅Eclipse API Rules of Engagement
调试插件定义了command,标识为org.eclipse.debug.ui.commands.Terminate
,听起来可能就是您想要的。尝试调用该命令。
更新
基本上,通过使用这个内部代码,你已经挖到了一个大洞。
AbstractDebugContextAction
也是内置的,已被删除,contextChanged
方法也是如此。 IAsynchronousTerminateAdapter
接口使用的所有终止代码也已消失。看起来所有这些代码都被重构为使用较新的command
和handler
范例而不是较旧的JFace Action
。
您应该能够使用org.eclipse.debug.ui.commands.Terminate
调用新的IHandlerService
命令,但您必须在当前选择等方面找出它所期望的内容。
答案 1 :(得分:0)
检查Eclipse 3.2.2 SDK javadoc是否弃用此类。我想是的。
在grep代码中搜索此类(TerminateAction
)时,我找到了results like this。意味着这个类被折射并重命名为其他类。