2014-09-22 44 views
1

我已经有:从自己的环境变量eclipse插件开始代码

使用eclipse keppler我正在创建一个eclipse插件,是在Linux,Windows和Mac下工作。 我想将一些现有的java代码包装到这个eclipse插件中。这工作正常。包装代码的执行可以通过点击插件UI中的按钮来启动。包装的代码使用一些环境变量。当这些设置为环境变量,然后启动eclipse时,会找到并使用变量。

什么,我想这样做:

我想设置一些文本框所需的环境变量在插件界面,然后开始缠绕代码,那么应该使用这些变量形成文本框的执行,所以我不再需要在启动eclipse之前将它们设置为环境变量。这显然会更灵活。 启动运行/调试过程时,eclipse ide本身使用此功能。对于这些进程,可以设置环境变量。这是我想要使用的机制。

我的问题:

  • 怎么可能从一个Eclipse插件启动一个进程,并为它提供了在插件UI设置的设置环境变量?
  • 是否有必要使用ProcessBuilder或Runtime.exec()或是否存在一些纯Java解决方案?
  • 是通过eclipse souce代码搜索答案的唯一方法吗?
+0

的答案吗?这些通常很难随时更改,您是否可以重构java代码来简单地输入参数?要么做一个方法调用,要么用参数调用主类。 – Fredrik 2014-09-22 11:58:25

+0

是的,包装的代码使用系统环境变量。实际上,我想要做的不是更改这些定义和导出的变量,而是在我的eclipse插件中设置自己的变量,并将它们'导出'它们,然后从执行包装代码的插件开始一些过程,然后使用从插件运行时导出的变量。 – tyler 2014-09-22 12:12:05

+0

@Fredrik重构unfortunatelly不是一个选项,因为包装的代码在其他地方被'使用',而我的插件只是它的一个测试者 – tyler 2014-09-22 12:13:57

回答

1

怎么可能从一个Eclipse插件启动一个进程,并为它提供了在插件UI设置的设置环境变量?

  1. 路线从您的UI插件的环境变量名和值。

  2. 使用ProcessBuilderRuntime.exec()可以使用适当的环境变量启动新的(外部)进程。

(第2步骤是一样的,如果你不使用Eclipse,你会做什么。)

也可能有这样的一个特定Eclipse的方式,但引擎盖下是将不得不使用ProcessBuilderRuntime.exec()

是否有必要使用ProcessBuilderRuntime.exec()还是有一些java-only解决方案?

如果你想运行Java代码作为一个单独的进程,那么在一定程度上,你必须使用ProcessBuilderRuntime.exec()。相反,虽然可以在“当前JVM”中运行Java应用程序,但您将无法更改当前应用程序的环境变量设置。 (您从System.getEnv()获得的Map被记录为“不可修改”。)

(我不知道你所说的“只有Java”的意思。你可以说,一个JVM使用另一种或ProcessBuilderRuntime.exec()“只有Java”的发射。)

是对的唯一途径找到一个通过eclipse souce代码搜索的答案?

号你也可以找到阅读的javadoc ...像我你使用的系统环境变量只是做了:-)

+0

'可能还有一个特定于Eclipse的方式来做到这一点...' - >这就是我正在寻找的东西。通过'java only'我的意思是:所有将被执行的代码都打包在一个插件中,使用ProcessBuilder或Runtime.exec,似乎最好是将代码执行到某处并从插件中调用它 – tyler 2014-09-22 12:50:17

+0

@tyler - 我已经解释过,在相同的JVM(例如Eclipse)中运行将不起作用。它不会让你改变环境变量。因此,除非你想要一些特定于Eclipse的*功能*(例如子进程与Eclipse /插件UI的集成),否则看过去的ProcessBuilder和朋友是没有意义的。 – 2014-09-22 13:35:05

+0

好吧,我会继续搜索。谢谢你到目前为止。 – tyler 2014-09-23 05:56:58