首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能获得用于在java中启动jvm的命令?

是否有可能获得用于在java中启动jvm的命令?
EN

Stack Overflow用户
提问于 2012-12-19 18:00:24
回答 4查看 19.4K关注 0票数 41

我想知道是否可以从代码中获得用于启动java程序的命令。

例如,如果我用以下方式启动java程序:

代码语言:javascript
复制
 java -cp lib1:lib2:... -jar mylib.jar com.foo.Bar

我想得到确切的字符串(包括jvm参数)。

有可能吗?

关于赏金和问题的评论

谢谢大家的回应。不幸的是,我没有得到我一直在寻找的答案。我希望有一些可移植的解决方案,从程序本身获得完整的java命令(包括类路径等)。似乎没有可移植的解决方案,而且由于我使用Linux,所以我使用agodinhost和Luigi R. Viggiano的响应来解决我的问题。然而,对于最完整的(便携的)响应,我给了rahulroc赏金。至于其余的人,请投所有人一票:)

EN

回答 4

Stack Overflow用户

发布于 2013-01-02 12:28:07

下面提到的代码应该显示所有JVM参数、传递给main方法的参数以及主类名。

代码语言:javascript
复制
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

import java.util.List;

public static void main(String[] args) {
  RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
  List<String> jvmArgs = bean.getInputArguments();

  for (int i = 0; i < jvmArgs.size(); i++) {
    System.out.println( jvmArgs.get( i ) );
  }
  System.out.println(" -classpath " + System.getProperty("java.class.path"));
  // print the non-JVM command line arguments
  // print name of the main class with its arguments, like org.ClassName param1 param2
  System.out.println(" " + System.getProperty("sun.java.command"));
}

用于getInputArguments的javadoc

返回传递给Java虚拟机的输入参数,该虚拟机不包括主方法的参数。如果Java虚拟机没有输入参数,此方法将返回一个空列表。 一些Java虚拟机实现可能从多个不同的来源获取输入参数:例如,从启动Java虚拟机的应用程序中传递的参数,例如'java‘命令、环境变量、配置文件等。 通常,并不是所有的命令行选项都被传递给Java虚拟机。因此,返回的输入参数可能不包括所有命令行选项。

您还可以查看:jps

它是一个Java程序,能够获得所有Java进程的完整命令行,包括主类和JVM选项的完整类名。

您可以找到各种JVM工具的很好的摘要,包括指向以下方面的Java应用程序启动程序链接:

  • ) -为Java虚拟机的运行时系统返回托管bean。
  • getInputArguments() javadoc
  • 确定JVM是否在调试模式中运行。
票数 26
EN

Stack Overflow用户

发布于 2012-12-19 18:03:33

可以使用检索VM参数:

代码语言:javascript
复制
public static void main(String args[]) {
    List<String> inputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
    System.out.println("input arguments = " + inputArguments);
}

但是,它不会为您提供所有的命令行(只提供JVM参数,不提供主类或参数)。样本输出:

输入参数=-Dfile.code=UTF-8,-XX:-UseTLAB,-Xms2000m,-Xmx2000m,-XX:+PrintCompilation,-XX:+PrintGC

票数 18
EN

Stack Overflow用户

发布于 2012-12-28 11:52:20

在linux机器中运行将更容易:

代码语言:javascript
复制
ps -ef | grep java

此命令将列出使用其使用的参数运行的所有java程序。

不确定在windows环境中可以使用什么。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13958318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档