如何使用java在Windows中列出当前运行的jar文件?

时间:2010-06-28 06:10:51

标签: java

我正在使用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" };`  

但它没有显示过程。请有人提出建议。谢谢你。

1 个答案:

答案 0 :(得分:2)

您实际上唯一能看到的是运行java虚拟机,但操作系统无法看到jvms中正在运行的线程。

'jar'文件不是可执行文件。它只不过是一个java库,它在库清单中有一个额外的条目,它用一个'main'方法命名一个类。因此,如果您使用jar选项启动java并传递此类jar,则虚拟机将使用此方法启动主线程。

但是我们仍然可以在同一个虚拟机中运行几个额外的线程,每个线程都可以适应应用程序的概念。

jps

  

如果在未指定hostid的情况下运行jps,它将在本地主机上查找已检测的JVM。

  

此实用程序不受支持,可能在JDK的未来版本中不可用。它目前在Windows 98和Windows ME平台上不可用。

因此,如果没有检测虚拟机,那么jps将不会报告任何内容(我怀疑它可以列出类路径上的jar文件或者到目前为止用于加载类的jar文件。)