【发布时间】:2017-04-17 08:01:24
【问题描述】:
我有一个类Normal,代码如下:
public class Normal {
private static String myStr = "Not working...";
private static boolean running = true;
public static void main(String[] args) {
while(running) {
System.out.println(myStr);
}
}
}
我在另一个项目中有另一个名为Injector 的类。它的目的是改变Normal的值,即使它们不在同一个JVM中:
public class Injector {
public static void main(String[] args) {
String PID = //Gets PID, which works fine
VirtualMachine vm = VirtualMachine.attach(PID);
/*
Set/Get field values for classes in vm?
*/
}
}
我想要做的是将Normal 类中的值myStr 和running 分别更改为"Working!" 和false,而不更改Normal 中的代码(仅在Injector 中)。
提前致谢
【问题讨论】:
-
我想你确实读过the JavaDocs of VirtualMachine 和那里的例子。您的
Injector现在可以将代理(已编译为单独的 .jar 文件的程序)加载到附加的 JVM 中。 -
JavaDocs for the instrument-package 包含很多关于代理需要做什么以及如何完成特定事情的信息。
标签: java jvm code-injection