我正在尝试使用一个名为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的清单文件(名为agent.jar):
Premain-Class: com.LoggerAgent
Class-Path: lib/javassist.jar
Agent-Class: com.LoggerAgent
Boot-Class-Path: agent.jar
关于这里出了什么问题的任何想法?
答案 0 :(得分:2)
比较主类(您有意写的那个)的类路径和您获得异常的类的类路径。
清单中的Class-Path与您编写它的方式相对于可执行JAR。