基本上,我正在尝试编写一些列出JVM加载的每个类的东西.我写的是有效的,但它只适用于它运行的jvm.
我精心设计了一个 java代理来动态注入另一个JVM,但后来意识到我实际上并不知道如何注入它.
我如何实际将此代理发送到另一个JVM?
可能吗?
我精心设计了一个 java代理来动态注入另一个JVM,但后来意识到我实际上并不知道如何注入它.
我如何实际将此代理发送到另一个JVM?
可能吗?
解决方法
动态代理需要声明在目标VM中附加时执行的agentmain(String,Instrumentation)方法.您可以使用tools.jar依赖项,它(仅限
Java 9)仅包含在JDK中,但不包含在JRE中.但是,您可以将代理程序与JDK捆绑在一起,并从那里附加到JVM.
最大的问题是不同的虚拟机API有所不同;但是,您可以使用像byte-buddy-agent这样的库,其中包含不同VM的不同实现.附件将通过以下方式完成:
ByteBuddyAgent.attach("my.jar","my-pid");
这会将my.jar中包含的代理程序附加到具有id my-id的Java进程上.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。