Javaagent 给出 ClassNotFoundException

Javaagent gives ClassNotFoundException

我正在尝试使用一个名为 LoggerAgent 的 javaagent 来获取一些 Java 应用程序日志的详细信息。但是我得到一个 ClassNotDefinedException:

Exception in thread "main" java.lang.ClassNotFoundException: com.LoggerAgent
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:304)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
FATAL ERROR in native method: processing of -javaagent failed
Aborted

有趣的是,如果我运行同一个LoggerAgent class上的javaagent(我特意在里面定义了一个main函数来测试这个),那么程序运行正常。如果有必要,我将 javaagent 的清单文件(命名为 agent.jar)粘贴到此处:

Premain-Class: com.LoggerAgent
Class-Path: lib/javassist.jar
Agent-Class: com.LoggerAgent
Boot-Class-Path: agent.jar

关于这里出了什么问题有什么想法吗?

比较主要 class(您有意编写的)的 class 路径和您在其中遇到异常的 class 的 class 路径.

清单中的 Class-Path 是相对于您编写的可执行 JAR 的路径。