我是菜鸟,请问老鸟:
在java中,如何获取windows系统的各种运行信息呢?【注意:非JAVA虚拟机的运行时信息】
比如CPU主频和占用率、内存大小以及内存占用率、虚拟内存大小以及虚拟内存占用率、硬盘大小分区状况以及占用率、进程数等等运行时信息
需要用到哪些类呢?需要第三方JAR包吗?哪里可以下载到这类JAR包。

解决方案 »

  1.   

    java 的"运行系统"是jvm,不是人家windows 
    您想获得人家windows系统进程,您"越界"了. 
    java不是用来做这个的. 
    倒是可以用Runtime类来调用windows的其它应用程序!
      

  2.   

    建议看下这篇文章,写的很清楚了http://www.javajsp.net/java/JavaFAQ/J2EEAPP/200607/852.html
      

  3.   

    java不太适合做这个,不过用jni也可以做
      

  4.   

    System类的getProperty方法我倒是也用过,可以获取些信息,但获取的信息很有限,也就是一些名称、版本、路径之类的信息,而且大部分也是JVM的信息
      

  5.   

    谢谢您的回复
    的确是越界了,用C++或者VB都可以轻松调用WindowsAPI来实现
    不过我现在在实验IBM的Aglet平台,就是做移动Agent的一个基于java的平台,
    我想通过向远程主机发送移动Agent来获取windows系统的运行时信息,整个系统平台是基于JAVA的,所有代码都是在本地主机编写,然后由Aglet平台发送到远程主机执行,所以必须使用纯的JAVA语言实现,真没办法引入其他语言来实现。
      

  6.   

    谢谢您的回复
    使用JNI可以在本地执行,但是在Aglet平台中,向远程主机发送agent的时候会报错
    Aglet中很多都受限制,比如果你编写的Agent中引入了Timer类,就无法完成Agent的迁移,同样也是发送过程中报错
    原因尚不很清楚,我对IBM Aglet平台的了解还很浅。
      

  7.   

    import java.util.Properties;
    public class GetProperties
    {
       public static void main(String args[])
      {
       Properties prop=new Properties(System.getProperties());
       prop.list(System.out);
      }
    }
      

  8.   

    c++编写关于windows系统信息的 dll
    然后java调用 
      

  9.   

    除非调用系统的dll,否则自己编写的dll如何发送到远程主机呢?
    因为现在的要求是收集信息的代码是在远程主机上执行的(有点类似于applet),代码是通过IBM Aglet平台进行发送的,只能发送纯JAVA的代码。
    据说,Windows提供了一个接口WMI来提供系统运行的性能与状态信息,不知JAVA是否可以直接访问?
      

  10.   

    把dll和jar搞到一起,java不可以访问WMI,vj++可以