我的应用程序部署在 Tomcat 上,并且我已经JAVA_OPTS
在/etc/default/tomcat7
.
似乎有一百万个不同的地方可以将这些变量提供给 Tomcat,所以我想检查我提供的值是否是实际使用的值。有什么我可以在运行时检查以确定这个变量的值。我查了一下System.getProperties()
,好像没有。
如果您只寻找属性覆盖和 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()
方法的参数。
您可以System.getenv("JAVA_OPTS")
按照建议使用。
如果您不想修改代码,则可以使用其中一些方法
Java 工具
jps -v
显示带有参数的 Java 进程
jvisualvm
连接到 Java 进程,让我们检查包括 MXBeans 在内的属性数量
GNU/Linux 工具
ps e
显示传递给进程的环境变量一件重要的事情,虽然帖子很旧。无论您传递什么变量,它都应该在您正在执行的类名之前,否则它将被忽略。
下面将起作用:
示例: java -classpath 。-Dformat=xls -DTabname=\"基础数据新建\" com.cg.bench.GenerateReport
以下将不起作用:
错误示例: java -classpath 。com.cg.bench.GenerateReport -Dformat=xls -DTabname=\"基础数据新建\"