Javaagent给出了ClassNotFoundException

时间:2015-08-02 10:39:59

标签: java classnotfoundexception manifest.mf javaagents

我正在尝试使用一个名为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

关于这里出了什么问题的任何想法?

1 个答案:

答案 0 :(得分:2)

比较主类(您有意写的那个)的类路径和您获得异常的类的类路径。

清单中的Class-Path与您编写它的方式相对于可执行JAR。