使用 Java_OPTS 启动 Java

Launching Java With Java_OPTS

这应该是一个非常简单的问题,我不敢相信我无法通过谷歌搜索找到任何东西。

我正在使用 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 class 的名称,我是 运行ning:

Caused by: java.lang.ClassNotFoundException: .rmi.ssl.client.enabledProtocols=TLSv1

我试过:

  1. ssl 选项 with/without 引用值
  2. 实际设置 JAVA_OPTS 环境变量,直到我在其他地方读到 JVM 从未读取该变量。
  3. 用更多引号将它们包裹起来

我有点不知所措。

Etan Reisner 发表了一条帮助我解决问题的评论:

Windows(出于某种原因)将参数分成两半。

echo -Dmy.param=value

returns:

-Dmy
.param=value

如果参数用引号引起来,例如:

echo "-Dmy.param=value"

然后就可以正常工作了。