我希望获得传递给sbt
调用的所有参数,包括JVM参数,而不知道提供了哪些参数。这可能吗?
这样的事情:
sbt -Dsbt.ivy.home=/tmp/.ivy2 -Divy.home=/tmp/.ivy2 -J-XX:+CMSClassUnloadingEnabled
所以我想看看传递了哪些参数,在这种情况下,它们是系统属性sbt.ivy.home
和ivy.home
,以及JVM属性XX:+CMSClassUnloadingEnabled
。我显然也需要相应的值。
如果我能把这一切都作为一个单独的字符串就可以了,也许它更现实了?
答案 0 :(得分:0)
这是一个更新的示例类,可以打印出所有环境变量和其他JVM参数:
import java.util.Scanner; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.util。*;
public class VMArgs{
public static void main(String... args){
Properties p = System.getProperties();
p.list(System.out);
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
System.out.println ("------------------arguments-----------------------------");
System.out.println(arguments);
}
}
在评论中,您提到:-J-XX:+CMSClassUnloadingEnabled
。我认为这是一个错字,-J无效。参数应为-XX:+CMSClassUnloadingEnabled
。
如果我使用-Xmx256m -XX:+CMSClassUnloadingEnabled
JVM arg运行上述程序,则输出为(忽略系统属性):
------------------arguments-------------------
[-Xmx256m, -XX:+CMSClassUnloadingEnabled]
这表明它确实按预期捕获并输出JVM args。