問題描述:
<extension
point="org.eclipse.debug.ui.launchConfigurationTabs">
<tab
class="com.example.launch.SqlDebugTab"
group="org.eclipse.jdt.debug.ui.launchConfigurationTabGroup.localJavaApplication"
id=" com.example.launchs.SqlDebugTab"
name="SqlDebugTab">
<associatedDelegate
delegate=" com.example.launch.SqlDebugLaunchDelegate">
</associatedDelegate>
</tab>
</extension>

<extension
point="org.eclipse.debug.core.launchDelegates">
<launchDelegate
delegate=" com.example.launch.SqlDebugLaunchDelegate"
id=" com.example.launch.SqlDebugLaunchDelegate"
modes="debug"
type="org.eclipse.jdt.launching.localJavaApplication">
</launchDelegate>
</extension>
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
IWorkbenchWindow window = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow();
if (window != null){
window.getActivePage().showView("……");
}
}
}
最近在Eclipse插件開發中遇到這樣的問題,我使用如入擴展點























也就是在調式Java Application的對話框中,增加一個Tab頁,Tab頁的名字為SqlDebugTab,在這個Tab頁上增加幾個復選框,復選框要顯示視圖的名稱,如果用戶選擇某個復選框,點“Debug”后,將顯示指定的視圖,可是在com.example.launch.SqlDebugLaunchDelegate類中的launch方法中調用PlatformUI.getWorkbench().getActiveWorkbenchWindow(),得到的對象卻為null,調試程序才發現,運行com.example.launch.SqlDebugLaunchDelegate類是,走的是新線程,也就是說點“Debug”按鈕時,Eclipse平臺啟動的是新的線程(非UI線程),而在新線程中是取不到ActiveWorkbenchWindow對象,為了解決這個問題,花費了很多時間,最后終于找到解決方法,在launch方法通過如下程序來顯示視圖,就可以解決上面遇到的問題:









