当前位置: 首页 > 面试题库 >

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

卜方伟
2023-03-14
问题内容

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


问题答案:

您可以使用以下命令在命令行上定义系统属性

-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);
   }
}


 类似资料:
  • null 我有两个问题: (1)我无法让Java可执行文件读取系统属性 我是否这样做: 我如何通过这些变量?另外,使用还是更好?

  • 问题内容: 我们在模型pojos中的一些方法已被注释为: columnDefinition 属性取决于数据库供应商,因此在尝试使用Hibernate删除HSQLDB中的架构时会失败: 为了解决这个问题,我正在考虑这个解决方案(但不想花时间,如果不可能的话),在运行时,为每个方法列加注: 获取@Column批注 创建列注释的副本,使用javaassist将columnDefinition设置为nul

  • 22.13.4.通过系统属性执行单独测试 如上所述该机制已经被测试过滤取代 译者注:被取代的东西就先不翻译了 Setting a system property of taskName.single = testNamePattern will only execute tests that match the specified testNamePattern. The taskName can

  • 使用log4j2记录器和服务器创建一个spring-boot应用程序是wildfly10/jboss7.1。我从Configuration:System Properties添加了“System Properties”:“LogLevel”,并且能够从Spring Boot应用程序访问它。我在log4j2.xml中调用了这个系统属性来设置日志级别。log4j2.xml: 控制器类:

  • 当我通过Eclipse运行Gradle项目时,我得到以下错误。

  • 问题内容: 如何从Java程序外部更改user.home系统属性,使其认为它与D:\ Documents and Settings \%USERNAME%是不同的目录?通过环境变量还是VM参数? 问题答案: 设置VM参数应该起作用: 这是一个测试案例: 在Win XP和Linux上使用Java 1.5.0_17测试