使用Java_OPTS启动Java

时间:2015-02-26 19:30:37

标签: java windows powershell environment-variables

这应该是一个非常简单的问题,我无法相信我无法通过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

我试过了:

  1. 带有/不带引号的ssl选项
  2. 实际设置JAVA_OPTS环境变量,直到我读到JVM没有读过该变量的其他地方。
  3. 用更多的引号包装它们
  4. 我在这里有点不知所措。

1 个答案:

答案 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"

然后就可以了。