Java: изменение системных свойств через среду выполнения - PullRequest
3 голосов
/ 19 июля 2010

У меня есть файл JAR, который я запускаю.Это сервер Selenium RC.Я хочу иметь возможность изменить системные значения JVM httpProxy.host/port/etc.С одной стороны, я могу изменить исходный код и добавить эту функцию. Это займет некоторое время.Есть ли другой возможный способ сделать это?Например, есть ли у меня собственный JAR (который установил бы эти свойства JVM), чтобы вызвать selenium-rc внутри того же самого экземпляра JVM (таким образом, он мог бы изменять значения своей переменной JVM)?

Ответы [ 2 ]

5 голосов
/ 19 июля 2010

Вы можете определить системные свойства в командной строке, используя

-DpropertyName=propertyValue

Чтобы вы могли написать

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

См. Java - средство запуска java-приложений

РЕДАКТИРОВАТЬ:

Вы можете написать оболочку, которая является средством запуска приложений.Легко эмулировать вызов метода 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);
   }
}
2 голосов
/ 19 июля 2010

Используйте метод System.setProperty () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...