Java命令行中的嵌套系统属性

Java命令行中的嵌套系统属性,java,command-line-arguments,system-properties,Java,Command Line Arguments,System Properties,有没有办法在Java命令行中嵌套系统属性?例如,指定如下内容: java-DworkingDir=/tmp-DconfigFile=${workingDir}/someFile.config 我的目标是在Eclipse中使用类似的Tomcat启动配置(Tomcat使用SLF4J/Logback进行了补丁以登录): 当然,只要确保您正确阅读并替换它,例如: java-DworkingDir=“/tmp”-DconfigFile=“${workingDir}/someFile.config” 你明白

有没有办法在Java命令行中嵌套系统属性?例如,指定如下内容:

java-DworkingDir=/tmp-DconfigFile=${workingDir}/someFile.config

我的目标是在Eclipse中使用类似的Tomcat启动配置(Tomcat使用SLF4J/Logback进行了补丁以登录):


当然,只要确保您正确阅读并替换它,例如:

java-DworkingDir=“/tmp”-DconfigFile=“${workingDir}/someFile.config”


你明白了…

当然,只要确保你正确阅读并替换它,例如:

java-DworkingDir=“/tmp”-DconfigFile=“${workingDir}/someFile.config”


你明白了…

没有办法让扩展透明地发生。。。在Java中。但你可以这样做:

$ workingDir=/tmp
$ java -DworkingDir=${workingDir} -DconfigFile=${workingDir}/someFile.config.
换句话说,让shell在调用Java之前进行扩展。(Windows批处理文件中的语法可能会有所不同……但想法是一样的。)


顺便说一句,如果您运行这样的命令:

$ java -DworkingDir=/tmp -DconfigFile=${workingDir}/someFile.config
POSIX shell将把
${workingDir}
解释为shell变量扩展。如果未定义任何
workingDir
变量,则此变量将扩展为零。。。因此,需要使用引号将
${workingDir}
转换为实际的Java属性值;e、 g

$ java -DworkingDir=/tmp -DconfigFile=\${workingDir}/someFile.config

没有办法让扩展透明地发生。。。在Java中。但你可以这样做:

$ workingDir=/tmp
$ java -DworkingDir=${workingDir} -DconfigFile=${workingDir}/someFile.config.
换句话说,让shell在调用Java之前进行扩展。(Windows批处理文件中的语法可能会有所不同……但想法是一样的。)


顺便说一句,如果您运行这样的命令:

$ java -DworkingDir=/tmp -DconfigFile=${workingDir}/someFile.config
POSIX shell将把
${workingDir}
解释为shell变量扩展。如果未定义任何
workingDir
变量,则此变量将扩展为零。。。因此,需要使用引号将
${workingDir}
转换为实际的Java属性值;e、 g

$ java -DworkingDir=/tmp -DconfigFile=\${workingDir}/someFile.config

+这完全属于壳牌的管辖范围。虽然询问者显然是在使用Windows(注意路径以'C:`'开头),但我认为他将不得不使用批处理脚本版本的变量和替换。因此,没有技巧就无法获得自然扩展。无法满足我的预期用途(在Eclipse启动配置中进行扩展)。谢谢你的回答,斯蒂芬C和六面体的回答都是可以接受的,汤姆·安德森的评论是相关的。这正好落在壳牌的辖区内。虽然询问者显然是在使用Windows(注意路径以'C:`'开头),但我认为他将不得不使用批处理脚本版本的变量和替换。因此,没有技巧就无法获得自然扩展。无法满足我的预期用途(在Eclipse启动配置中进行扩展)。谢谢你的回答,斯蒂芬C和iccthedral的回答都是可以接受的,汤姆·安德森的评论是相关的。