我正在尝试为我自己的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的作业管理器中,这样我就可以看到线程的进展。
任何人都可以帮助我?
提前致谢!