java - 如何在不更改代码的情况下动态拦截 jar 中的方法?

标签 java methods jar runtime

我有一个包含多个 .class 文件的 jar 文件。每个 .class 文件中都有多个方法。现在,当 jar 正在执行时,即在运行时,我想使用外部用户定义的方法来拦截这些方法。也就是说,我想在 jar 类中的每个方法调用之前或之后运行外部方法。

我已经研究过 Spring-AOP,但它说我需要在 Spring 上下文中声明类,因此将按照在 Spring 上下文中编写的顺序调用这些类及其方法。

但我希望执行流程是原始 jar webapp 的执行流程。

您能与我分享任何可以用来实现我上面解释的内容吗?提前致谢!

最佳答案

您可以使用 JVM 检测 API,它允许您使用像 http://commons.apache.org/proper/commons-bcel/ 这样的库修改正在加载的类。 。请参阅此处的示例 https://web.archive.org/web/20181012004753/http://blog.javabenchmark.org/2013/05/java-instrumentation-tutorial.html

关于java - 如何在不更改代码的情况下动态拦截 jar 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19997465/

相关文章:

Delphi:防止方法名称出现在可执行文件中

java - 通过bash运行Java应用程序的多个实例,如何访问其外壳菜单?

java - 如何从 imap 只下载新邮件?

java - 蓝牙 InputStream.read() 不会永远返回数据和 block

c++ - 类局部特化继承方法

java - 方法需要从用户返回字符串。只需要排除故障

Maven:有依赖关系的 Jar VS 没有依赖关系的 jar

Java jar 文件未在 Linux 终端中运行

java获取随机角度的坐标

java - JNA user32.ShowWindow 与 java.util.Scanner 不起作用