我正在使用java开发一个简单的控制台应用程序。我想在我的系统中显示当前运行的jar文件。以下代码显示所有正在运行的进程窗口。
try {
String cmds[] = { "cmd", "/c", "tasklist" };
Process myProcess = Runtime.getRuntime().exec(cmds);
BufferedReader stdout = new BufferedReader(new InputStreamReader(
myProcess.getInputStream()));
String line = stdout.readLine();
File file = new File("writer.txt");
writer = new BufferedWriter(new FileWriter(file));
while (line != null) {
writer.write(line);
writer.write("\n");
System.out.println(line);
line = stdout.readLine();
}
writer.close();
} catch (Exception e) {// Catch exception if any
System.err.println("Error: " + e.getMessage());
}
我用过
`String cmds[] = { "cmd", "/c", "jps" };`
但它没有显示过程。请有人提出建议。谢谢你。
答案 0 :(得分:2)
您实际上唯一能看到的是运行java虚拟机,但操作系统无法看到jvms中正在运行的线程。
'jar'文件不是可执行文件。它只不过是一个java库,它在库清单中有一个额外的条目,它用一个'main'方法命名一个类。因此,如果您使用jar选项启动java并传递此类jar,则虚拟机将使用此方法启动主线程。
但是我们仍然可以在同一个虚拟机中运行几个额外的线程,每个线程都可以适应应用程序的概念。
jps
:
如果在未指定hostid的情况下运行jps,它将在本地主机上查找已检测的JVM。
和
此实用程序不受支持,可能在JDK的未来版本中不可用。它目前在Windows 98和Windows ME平台上不可用。
因此,如果没有检测虚拟机,那么jps将不会报告任何内容(我怀疑它可以列出类路径上的jar文件或者到目前为止用于加载类的jar文件。)