有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jmx java。lang:type=Runtime不是接口java的实例。朗,管理层。RuntimeMXBean

final RuntimeMXBean remoteRuntime = 
                ManagementFactory.newPlatformMXBeanProxy(
                        serverConnection,
                    ManagementFactory.RUNTIME_MXBEAN_NAME,
                    RuntimeMXBean.class);

服务器连接基本上就是连接到jmx服务器

基本上,这段代码运行良好。让我解释一下:

这段代码的第一次调用调用服务器A,然后我从中提取一些数据并将其存储到xml文件中。使用此信息,启动新的服务器B

然后,为了验证B,我想刮取B来比较元数据。但当我运行它时,我得到了一个例外

    java.lang.IllegalArgumentException: java.lang:type=Runtime is not an instance of interface java.lang.management.RuntimeMXBean
        at java.lang.management.ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.java:617

)

但是,我不确定这里发生了什么变化,因为给我带来问题的参数是由我无法控制的ManagementFactory类管理的


共 (1) 个答案

  1. # 1 楼答案

    问题在于我自己的MBeanServer实现

    如果传入的objectName返回空对象,则isInstanceOf()方法返回false。事实证明,这种情况发生在所有运行时类中,因此在阅读了类加载器部分下的http://tim.oreilly.com/pub/a/onjava/2005/01/26/classloading.html之后,我发现我的类加载器实现不正确,并且加载不正确

    解决方法就是在这些运行时类的isInstanceOf()中返回true