Java:通过运行时修改系统属性

时间:2010-07-18 22:43:49

标签: java selenium

我有一个运行的jar文件。它是Selenium RC服务器。我希望能够更改JVM httpProxy.host/port/etc系统值。一方面,我可以修改源并添加此功能。需要一些时间。还有另一种可能的方法吗?就像拥有我自己的JAR(它会设置这些JVM属性)一样,在同一个JVM实例中调用selenium-rc(这样它就可以修改它的JVM变量的值)?

2 个答案:

答案 0 :(得分:5)

您可以使用

在命令行上定义系统属性
-DpropertyName=propertyValue

所以你可以写

java -jar selenium-rc.jar -Dhttp.proxyHost=YourProxyHost -Dhttp.proxyPort=YourProxyPort

请参阅Java - the java application launcher

编辑:

您可以编写一个应用程序启动器的包装器。很容易模拟使用反射在类中调用main方法。然后,您还可以在启动最终应用程序之前通过System.setProperty设置系统属性。例如,

public class AppWrapper
{
/* args[0] - class to launch */     
   public static void main(String[] args) throws Exception
   {  // error checking omitted for brevity
      Class app = Class.forName(args[0]);
      Method main = app.getDeclaredMethod("main", new Class[] { (new String[1]).getClass()});
      String[] appArgs = new String[args.length-1];
      System.arraycopy(args, 1, appArgs, 0, appArgs.length);
      System.setProperty("http.proxyHost", "someHost");
      main.invoke(null, appArgs);
   }
}

答案 1 :(得分:2)

使用System.setProperty()方法。