这应该是一个非常简单的问题,我无法相信我无法通过Google搜索找到任何内容。
我正在使用PowerShell,并且我试图从命令行运行java应用程序:
$memory = "-Xms128m -Xmx1028m -XX:MaxPermSize=512m"
$ssl = "-Djavax.rmi.ssl.client.enabledProtocols=`"TLSv1`" -Djavax.rmi.ssl.client.enabledCipherSuites=`"_removed_`" -Djavax.net.ssl.trustStorePassword=`"_removed_`" -Djavax.net.ssl.trustStore=`"_removed_`" -Djavax.net.ssl.keyStorePassword=`"_removed_`" -Djavax.net.ssl.keyStore=`"_removed_`" -Djava.endorsed.dirs=`"$($ddmsLoc)tomcat6\endorsed`""
$classpath = getClasspath "manager" $null
$java_opts = "$($memory) $($ssl) -Djavax.net.debug=all"
$cmd = "$($java) $($java_opts) -cp `"$($classpath)`" dss.vector.solutions.manager.server.ServerStatus -g"
Invoke-Expression $cmd
但由于某种原因,它认为我的JAVA_OPTS参数是我正在运行的java类的名称:
Caused by: java.lang.ClassNotFoundException: .rmi.ssl.client.enabledProtocols=TLSv1
我试过了:
我在这里有点不知所措。
答案 0 :(得分:1)
Etan Reisner发表了一条评论,帮助我解决了这个问题:
Why does PowerShell split arguments containing hyphens and periods?
Windows(由于某种原因)将参数分成两半。
echo -Dmy.param=value
返回:
-Dmy
.param=value
如果参数包含在引号中,例如:
echo "-Dmy.param=value"
然后就可以了。