![](/img/trans.png)
[英]Eclipse plugin: How to show a ProcessConsole for a launch with a custom launch configuration and process?
[英]How to capture console output of Eclipse plugin with custom Launch Configuration?
我正在編寫一個帶有自定義啟動配置的Eclipse插件,即LaunchConfigurationDelegate
子類中的launch()
方法。 這個方法本質上只是調用Runtime.exec()
,但是當我從launch()
內部寫入System.out時,它會進入調試插件的Eclipse實例的控制台,而不是插件實例本身的控制台。 我已經分析了該方法的ILaunchConfiguration
和ILaunch
參數,但無法找到任何指定我可以寫入的輸出/錯誤流的地方。
正如教程中推薦的那樣,我有兩個獨立的插件一起運行; 一個處理UI東西( LaunchConfigurationTab
, LaunchConfigurationTabGroup
, LaunchShortcut
),另一個包含LaunchConfigurationDelegate
本身。
我使用這段代碼在我的UI插件中創建了一個控制台,我可以在UI代碼中寫得很好。 但我無法弄清楚如何將我的非UI插件中生成的輸出定向到我的UI插件中創建的控制台。
我讀過這篇文章和這一個 ,但他們沒有規定如何“得到阿霍德”,這是中產生的輸出的launch()
擺在首位方法。
任何指針都會非常受歡迎,我被困住了!
好吧,我終於設法得到了如下工作:
在我的LaunchConfigurationDelegate
我介紹了以下靜態方法:
public static void setConsole(PrintStream ps) {
System.setOut(ps);
System.setErr(ps);
}
然后在我的UI插件的PerspectiveFactory
創建我的控制台時,我將其調用如下:
private void createConsole() {
console = new MessageConsole("My Console", null);
console.activate();
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[]{ console });
MessageConsoleStream stream = console.newMessageStream();
MyLaunchConfigurationDelegate.setConsole(new PrintStream(stream));
}
這是有效的,除非我每次關閉Eclipse並重新啟動它時控制台都會消失。 但是,當我重置我的視角時,控制台會再次出現。 顯然我需要在啟動時調用該代碼,而不是在PerspectiveFactory本身。
希望這可以幫助某人..如果有人對這最后一個問題(或者我的方法一般)有一些意見,請做評論!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.