在Windows 10中使用PowerShell时传递名称中带句点的自定义Java属性

在Windows 10中使用PowerShell时传递名称中带句点的自定义Java属性,java,powershell,Java,Powershell,我有以下代码: public static void main(String[] args) { String prop1 = System.getProperty("test.prop", "missing"); System.out.println("test.prop: " + prop1); String prop2 = System.getProperty("otherprop&qu

我有以下代码:

public static void main(String[] args) {
    String prop1 = System.getProperty("test.prop", "missing");
    System.out.println("test.prop: " + prop1);
    
    String prop2 = System.getProperty("otherprop", "missing");
    System.out.println("otherprop: " + prop2);
    
    String cmd = System.getProperty("sun.java.command");
    System.out.println("cmd: " + cmd);
}
我使用PowerShell调用构建的jar:

> java -jar TestApp.jar -Dtest.prop=value1 -Dotherprop=value2
test.prop: missing
otherprop: missing
cmd: TestApp.jar -Dtest .prop=value1 -Dotherprop=value2

> java -Dtest.prop=value1 -Dotherprop=value2 -jar TestApp.jar
Error: Could not find or load main class .prop=value1
为什么PowerShell不将命令行参数作为自定义属性传递给Java,以及如何使其工作?

正确的调用是:

java  -Dtest.prop=value1 -Dotherprop=value2 -jar TestApp.jar

当属性在jar文件名之后传递时,它们将作为程序参数传递给
main
方法,而不是设置为系统属性。

我得到
错误:运行此命令时无法找到或加载主类。prop=value1
。我相信这与PowerShell处理命令的方式有关。这确实正确。我怀疑您在
-Dtest
之后有一个空格。请仔细检查并删除任何意外的空白。那里没有空白。附加到原始问题的屏幕截图。你能在普通的windows命令行上运行它吗。。。或者尝试
java“-Dtest.prop=value1”“-Dotherprop=value2”-jar TestApp.jar
?这是否回答了您的问题。TL;DR使用
java--%-Dsomethin.dot….
与PSO一起使用请勿发布代码、数据、错误消息等的图像-将文本复制或键入问题中@罗布,如果你仔细看的话,所有的代码都已经以文本的形式发布在问题中了。这幅图是一幅插图。结束问题是不合适的,否决票也是不合适的。@mlt,我认为这也可能有效。我用公认的答案解决了这个问题。