Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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_Batch File_Properties_Jvm - Fatal编程技术网

Java 为特定JVM设置系统属性

Java 为特定JVM设置系统属性,java,batch-file,properties,jvm,Java,Batch File,Properties,Jvm,我有一个java程序,它在单独的JVM中执行批处理文件。现在,设置System.setProperty()在批处理文件中没有任何效果 System.setProperty(key,value); Process shutdownProcess = Runtime.getRuntime().exec("ABC.bat"); 此进程在单独的JVM中运行。 在bat文件中,我执行一个java程序,在这里我访问-System.getProperty(key),但是我在这里得到空值,那么如何从java在

我有一个java程序,它在单独的JVM中执行批处理文件。现在,设置System.setProperty()在批处理文件中没有任何效果

System.setProperty(key,value);
Process shutdownProcess = Runtime.getRuntime().exec("ABC.bat");
此进程在单独的JVM中运行。
在bat文件中,我执行一个java程序,在这里我访问
-System.getProperty(key)
,但是我在这里得到空值,那么如何从java在特定JVM中设置系统属性,执行bat文件时是否可以传递任何参数,或者使用
Runtime.getRuntime
可以执行哪些操作您正在访问JVM正在其中执行的环境(主机、操作系统等)。使用
exec
可以在这样的环境中启动命令。这意味着在Windows上的命令提示符或*nix上的shell中执行该命令

在命令提示符/shell中没有这样的“JVM系统属性”概念。如果需要将参数从JVM传递到bat文件,一种方法是使用命令提示符标准语法,并在bat文件中进行解析。类似下面的内容

Runtime.getRuntime().exec("ABC.bat " + key + " " + value)
set key=%1
set value=%2
在bat文件中,您将能够使用以下命令检索键和值

Runtime.getRuntime().exec("ABC.bat " + key + " " + value)
set key=%1
set value=%2

这是非常不清楚的。请回答您的问题并澄清。系统属性是每个进程的属性。您需要将属性传递给另一个进程。也许,您想改为使用环境变量?感谢您的回复,任何直接参数(如-DProperty)都可以在执行bat文件时传递@以“自动”方式安装Davidnot<代码>-DProperty参数由JVM正确解释,但您正在使用JVM在操作系统中运行bat文件,其中
-DProperty
语法没有特殊意义。建议的解决方案是最简单的。您当然可以实现更健壮、更符合您需求的功能。@user1如果您对答案满意,请将此标记为答案好吗?:-)