有 Java 编程相关的问题?

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

java JVM在运行(非指令)会话中获取类的实例

我需要通过调用给定类实例上的特定方法来停止进程。这个过程已经运行了一天,如果我努力关闭它,我会损失很多工作。由于API中的错误,GUI连接错误,并且没有调用正确的停止函数。我附带了一个交互式Java(Scala)解释器,因此,如果我能够获得流程的实例,我就可以轻松地调用正确的方法

我没有在调试会话中,没有com。太阳杰迪。我可以在堆栈跟踪转储中看到实例,但是StackTraceElement不包含实际的实例,只包含类和行号

在一个正在运行的会话中,没有特定的插装,有没有办法通过它的类,通过线程转储来获取该实例


共 (1) 个答案

  1. # 1 楼答案

    可以使用JVMTI^{}函数获取给定类的所有实例。参见this answer中的一个例子

    创建一个JNI库,该库将使用上述函数找到所需的实例,并从^{}条目中对其调用一个方法。然后从解释器控制台调用System.load来加载这个库