如何捕获IVMRunner输出?

时间:2018-04-10 13:15:26

标签: java eclipse eclipse-plugin eclipse-rcp

我正在尝试为我自己的eclipse插件实现一个特定的功能。我想运行一个外部main(它位于插件目标工作区)。 这是我实施我的解决方案的代码:

public static void runInstaller (String prjInstaller, String url, String usr, String pwd, boolean jmes, boolean cal, boolean jpm, boolean prc, boolean hmi, boolean others, boolean tst) throws Exception {
    List<IJavaProject> javaProjects = getWsProjects ();
    for (IJavaProject jPrj : javaProjects) {
        if (jPrj.getElementName ().equals (prjInstaller)) {
            try {
                IVMInstall vm = JavaRuntime.getVMInstall (jPrj);
                if (vm == null) { vm = JavaRuntime.getDefaultVMInstall (); }
                IVMRunner vmr = vm.getVMRunner (ILaunchManager.RUN_MODE);
                String[] cp = JavaRuntime.computeDefaultRuntimeClassPath (jPrj);
                VMRunnerConfiguration config = new VMRunnerConfiguration ("net.synergy.setup.Installer", cp);
                String[] args = { url, usr, pwd, String.valueOf (jmes), String.valueOf (cal), String.valueOf (jpm), String.valueOf (hmi), String.valueOf (prc), String.valueOf (others), String.valueOf (tst) };
                config.setProgramArguments (args);
                ILaunch launch = new Launch (null, ILaunchManager.RUN_MODE, null);
                vmr.run (config, launch, null);
                break;
            } catch (Throwable e) {
                throw e;
            } // try-catch      
        } // if 
    } // for
} // runInstaller

此解决方案正常运行。我实例化一个新的vm,在其中运行我的主类。我也可以将参数传递给&#34; runner&#34;。太棒了。 我现在的问题是如何在这个过程中捕获系统。在这个主类我有一些system.out.print,我会看到捕获此输出并将其重定向到日志文件或更好的控制台。 进程正常运行(它是一个填充空数据库的进程,我可以在运行线程后查看结果)但我需要查看控制台输出。

这也是一个可能的解决方案,也可以将这个线程包装到Eclipse的作业管理器中,这样我就可以看到线程的进展。

任何人都可以帮助我?

提前致谢!

0 个答案:

没有答案