使用JAVA_OPTS环境变量运行java没有任何效果

59
在一个shell脚本中,我设置了JAVA_OPTS环境变量(以启用远程调试和增加内存),然后我按照以下方式执行jar文件:
export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Xms512m -Xmx512m"
java -jar analyse.jar $*

然而,似乎JAVA_OPTS环境变量没有任何效果,因为我无法连接到远程调试,并且我看不到JVM内存的任何变化。

可能是什么问题呢?

PS:我不能在java -jar analyse.jar $*命令中使用这些设置,因为我在应用程序中处理命令行参数。

3个回答

104
您可以设置_JAVA_OPTIONS而不是JAVA_OPTS。这样可以在没有$_JAVA_OPTIONS的情况下正常工作。

7
这就是真正的答案。我花了几个小时四处寻找才找到它。 - BitwiseMan
3
@Nerrve 专门为你安装了 Windows XP。运行良好。你确定你做的一切都是正确的吗? - HEX
10
您也可以使用JAVA_TOOL_OPTIONS(https://dev59.com/114c5IYBdhLWcg3wFm44) - Hubbitus
2
@Hubbitus,您的建议似乎是正确的答案。您应该将其添加进去。 - geg
3
抱歉,我不能这样做。我遇到了“将平凡答案转换为评论”的限制。 - Hubbitus
显示剩余5条评论

60

我不知道有任何JVM实际检查JAVA_OPTS环境变量。通常这是在启动JVM的脚本中使用,而它们通常只是将其添加到java命令行中。

在这里需要理解的关键是,在-jar analyse.jar之前作为java参数传递的内容仅会影响JVM,而不会被传递给您的程序。因此,修改脚本中的java行:

java $JAVA_OPTS -jar analyse.jar $*

应该“只是工作”。


看 HEX 的回答。这就是在 OS X 上使用环境变量设置选项的方法。 - BitwiseMan

2
过去的12年里发生了一些变化:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接