在Java命令行中设置多个系统属性

在Java命令行中设置多个系统属性,java,command-line,system-properties,Java,Command Line,System Properties,在Java程序的命令行上指定多个系统属性比使用多个-D语句更容易吗 试图避免这种情况: java -jar -DNAME="myName" -DVERSION="1.0" -DLOCATION="home" program.jar 我想我看到过一个例子,有人使用了一个-D和一些引用字符串,但我再也找不到这个例子了。上面没有提到类似的内容 这里有一句话: -D属性=值 设置系统属性值。如果值是一个字符串 如果包含空格,则必须将字符串括在双引号中: java-Dfoo=“some string”

在Java程序的命令行上指定多个系统属性比使用多个-D语句更容易吗

试图避免这种情况:

 java -jar -DNAME="myName" -DVERSION="1.0" -DLOCATION="home" program.jar
我想我看到过一个例子,有人使用了一个
-D
和一些引用字符串,但我再也找不到这个例子了。

上面没有提到类似的内容

这里有一句话:

-D属性=值 设置系统属性值。如果值是一个字符串 如果包含空格,则必须将字符串括在双引号中:

java-Dfoo=“some string”SomeClass


您可以使用.properties来存储属性,而不是将属性作为参数传递

答案是否定的。你可能看到过这样一个例子,有人会设置如下内容:

-DArguments=a=1、b=2、c=3、d=4、e=cow

然后,应用程序将解析
参数的值
属性字符串以获取单个值。 在
main
中,您可以获得如下键值(假设保证输入格式):

String line=System.getProperty(“参数”);
如果(行!=null){
字符串str[]=line.split(“,”);

对于(int i=1;i如果需要在系统中设置所需的属性,则没有比-D更好的选项
但是,如果在引导应用程序时需要这些属性,那么通过属性文件加载属性是最好的选择。它不需要更改单个属性的构建。

您可以使用
JAVA\u工具\u选项
环境变量来设置选项。它对我和Rasbian一起工作。请查看哪个具有也就是说:

在许多环境中,用户不容易访问命令行 使用必要的命令行选项启动应用程序

这通常发生在使用嵌入式VM的应用程序中(即 他们使用Java本机接口(JNI)调用API来启动 VM),或者在脚本中深度嵌套启动 环境JAVA_工具_选项环境变量可能很有用 扩充命令行

设置此环境变量时,JNI_CreateJavaVM函数 (在JNI调用API中),JNI_CreateJavaVM函数添加 将环境变量的值设置为其 JavaVMInitArgs参数

但是,出于安全原因,可能会禁用此环境变量的使用

在某些情况下,出于安全原因,此选项被禁用 例如,在Oracle Solaris操作系统上,此选项为 当有效用户或组ID与实际ID不同时禁用

请参见此示例,其中显示了在命令行上指定与使用
JAVA\u工具\u选项
环境变量之间的区别


+1:您还可以使用
system.getProperties().load(新文件输入流(“my.properties”))将它们加载到系统属性中
但是,拥有自己的属性可能是更好的方法。SomeClass
所指的类是什么?我正在尝试使用Spring、Struts和Tomcat 8.5将此属性设置为读取
。属性文件是命令中唯一尚不清楚的部分me@Frakcool
SomeClass
将是使用您试图运行的main方法初始化。通常它会有一个包声明,您应该使用完全限定的类名来运行它。哦,我明白了,这是我所想的,但是在web应用程序中没有
main
方法,所以,我认为这是在tomcat的属性中完成的,对吗?@Frakcoole设置系统属性的方法有很多。这个问题是关于从命令行设置它们的。您还可以研究使用所需的系统属性设置
JAVA\u OPTS
环境变量谢谢您的帮助从JAVA 9开始,您可以设置部分或全部选项(例如,
-DNAME=“myName”-DVERSION=“1.0”-DLOCATION=“home”-jar program.jar
)转换为纯文本文件,然后使用“参数文件”运行java启动器语法,例如,
java@that_plain_text_文件
。如何使用
-D
方法需要为单个属性重新构建?
此外,-D应该在主类或jar文件之前
谢谢!您救了我。
String line = System.getProperty("Arguments");
if(line != null) {
  String str[] = line.split(",");
    for(int i=1;i<str.length;i++){
        String arr[] = str[i].split("=");
        System.out.println("Key = " + arr[0]);
        System.out.println("Value = " +  arr[1]);
    }
}