我的应用程序部署在Tomcat上,我在JAVA_OPTS
中配置了/etc/default/tomcat7
环境变量。
似乎有一百万个不同的地方可以将这些变量提供给Tomcat,所以我想检查我提供的值是实际使用的值。我是否可以在运行时检查以确定此变量的值。我检查了System.getProperties()
,但似乎没有。
答案 0 :(得分:2)
如果您正在寻找 属性覆盖和JVM参数,您可以使用RuntimeMXBean:
RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
System.out.println(mxBean.getInputArguments());
例如,使用以下命令行运行:
java -Xms512m -Xmx1024m -Dtest.prop=foo com.example.sandbox.RuntimeMXBeanExample
我得到以下输出:
[-Xms512m, -Xmx1024m, -Dtest.prop=foo]
请注意,不包含传递给main()
方法的参数。
答案 1 :(得分:1)
您可以按照建议使用System.getenv("JAVA_OPTS")
。
如果您不想修改代码,则可以使用其中一些方法
Java工具
jps -v
显示带参数的Java进程
jvisualvm
连接到Java进程,让你检查多少属性,包括MXBeans
GNU / Linux工具
ps e
显示传递给流程的环境变量答案 2 :(得分:1)
一个重要的事情,虽然帖子很旧。无论你传递什么变量,它都应该在你正在执行的类名之前,否则它将被忽略。
下面会有效:
示例:java -classpath。 -Dformat = xls -DTabname = \“Base data new \”com.cg.bench.GenerateReport
以下不起作用:
错误示例:java -classpath。 com.cg.bench.GenerateReport -Dformat = xls -DTabname = \“Base data new \”