我们正在尝试将我的项目中的 Eclipse 从 3.2.2 更新到 3.7.2。发现TerminateAction.java
包裹中缺失 org/eclipse/debug/internal/ui/actions/context
。有人可以告诉我 TerminateAction.java
的替代方案是什么吗?对于 3.7.2。以及为什么它被改变。
我发现错误:https://bugs.eclipse.org/bugs/show_bug.cgi?id=293109与 Terminate 和 Relaunch 相关,但没有找到 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 GK:
这里的 contextChanged 是属于类 org.eclipse.debug.internal.ui.actions.context.AbstractDebugContextAction
的方法类所以我想我不能使用 TerminateCommandAction
在这里,因为它正在扩展 DebugCommandAction.java
缺少该功能。
我们在哪里可以找到 contextChanged()
方法或者我们可以继续创建我们自己的 TerminateAction
类与旧类类似。
请提出任何替代解决方案。
谢谢
最佳答案
包名称中带有 internal
的 Eclipse 类仅供内部使用,因此如有更改或删除,恕不另行通知 - 请参阅 Eclipse API Rules of Engagement
调试插件定义了 command id org.eclipse.debug.ui.commands.Terminate 听起来可能就是你想要的。尝试调用该命令。
更新:
基本上,通过使用这个内部代码,你已经给自己挖了一个大坑。
AbstractDebugContextAction
也是内部的,已被删除,contextChanged
方法也是如此。所有这些终止代码使用的 IAsynchronousTerminateAdapter
接口(interface)也消失了。看起来所有这些代码都经过重构,以使用较旧的 JFace Action
上较新的 command
和 handler
范例。
您应该能够使用 IHandlerService
调用新的 org.eclipse.debug.ui.commands.Terminate
命令,但您必须弄清楚它的期望当前选择等条款。
关于java - Eclipse 3.7.2 的包 org.eclipse.debug.internal.ui.actions.context 中缺少 TerminateAction.java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968792/