Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将整个文件传递给JVM参数_Java_Jvm_Jvm Arguments - Fatal编程技术网

Java 将整个文件传递给JVM参数

Java 将整个文件传递给JVM参数,java,jvm,jvm-arguments,Java,Jvm,Jvm Arguments,我有几个系统都需要将相同的属性加载到JVM。我可以使用-D标志一次加载一个属性,但我正在寻找一种可以一次加载整个文件中所有属性的方法。例如: 我可以只向网络上的所有JVM添加一次--options file=blah.properties,从那时起只更改属性文件,它可以是网络共享上的单个中心文件 谢谢, 编辑:任何参数或命令也必须在windows环境中工作。因此,任何特定于unix的bash或脚本攻击都不会起作用。一些选项: 将属性包装到.jar文件中,然后让进程从getClass().getR

我有几个系统都需要将相同的属性加载到JVM。我可以使用-D标志一次加载一个属性,但我正在寻找一种可以一次加载整个文件中所有属性的方法。例如:

我可以只向网络上的所有JVM添加一次--options file=blah.properties,从那时起只更改属性文件,它可以是网络共享上的单个中心文件

谢谢,

编辑:任何参数或命令也必须在windows环境中工作。因此,任何特定于unix的bash或脚本攻击都不会起作用。

一些选项:

  • 将属性包装到.jar文件中,然后让进程从
    getClass().getResourceAsStream()读取该属性文件。
  • 编写一个批处理文件来执行Java进程,或者显式列出-D选项,或者动态创建命令行

  • 我通常通过使用Spring(也用于其他原因)和a来解决这个问题。这允许我为属性文件指定一个或多个位置,并在适当的位置修改Spring配置。

    我们大致就是这样做的:

    java$(tr'\n'


    这里的
    选项\u文件
    包含ready
    -Dsomething
    -Xsomething
    值,每行一个。
    tr
    命令只是用空格替换每条换行符

    我不认为您可以通过命令行来实现这一点(也许没有一些bash黑客),但您肯定可以通过编程实现这一点:

    只需设置一个属性
    -DmyPropertiesFile=/your/properties/file.properties
    ,然后使用其中一个
    properties.load()
    重载读取该属性。在这之后,
    System.setProperties(yourProps)
    应该做您期望的事情


    当然,这要求您可以尽早挂接此代码,以便在需要时可以使用您的属性(例如,如果
    main()
    方法是您的,这是完美的)。

    如果您使用Ant来访问Java进程,9000的答案(加上他的windows注释)将起作用,您可以让启动器处理操作系统的差异


    有一个StackOverflow线程,描述如何从ant

    getClass()确定操作系统。getResourceAsStream()是应用程序启动后在应用程序内部执行的操作,对吗?在任何应用程序启动之前,我需要这样做。我认为这不会起作用,因为web应用程序和log4j应用程序都需要访问相同的变量…@doug:不会的。在windows下,您需要像/S delim=…
    这样的东西,但windows提供了一种逐行读取文件的方法;您将这些行添加到环境变量中。好的,我将尝试一下。谢谢