我正在尝试使用一个名为 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 类上运行 javaagent(我特意在其中定义了一个 main 函数来测试它),那么程序会正常运行。如果有必要,我将 javaagent 的 list 文件(命名为 agent.jar)粘贴在这里:
Premain-Class: com.LoggerAgent
Class-Path: lib/javassist.jar
Agent-Class: com.LoggerAgent
Boot-Class-Path: agent.jar
关于这里出了什么问题有什么想法吗?
最佳答案
比较主类(您有意编写的那个)的类路径和您在其中获得异常的类的类路径。
list 中的类路径与您编写的可执行 JAR 相关。
关于Javaagent 给出 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31771012/