ClassNotFoundException与java代理(-javaagent:jarpath)

ClassNotFoundException与java代理(-javaagent:jarpath),java,jboss,classloader,jboss7.x,agent,Java,Jboss,Classloader,Jboss7.x,Agent,我的问题的根源是,我试图从部署在JBoss AS7上的web应用程序中使用SizeOf,并获得net.sourceforge.SizeOf.SizeOf的ClassNotFoundException。我在服务器的JAVA选项中添加了-javaagent:/path\u to_jar/SizeOf.jar,并在服务器启动时从premain方法中查看System.out.println(JAVAGENT:call premain instrumentation for class SizeOf)。但

我的问题的根源是,我试图从部署在JBoss AS7上的web应用程序中使用SizeOf,并获得
net.sourceforge.SizeOf.SizeOf
ClassNotFoundException
。我在服务器的
JAVA选项中添加了
-javaagent:/path\u to_jar/SizeOf.jar
,并在服务器启动时从premain方法中查看
System.out.println
(JAVAGENT:call premain instrumentation for class SizeOf)。但是,当我尝试从servlet的doGet方法调用
SizeOf.SizeOf(obj)
时,应用程序失败,出现上述
ClassNotFoundException


如果有人能告诉我如何使用JBoss AS7实现这一点,那将非常有用(我让它在Eclipse运行配置中工作——相当于从命令行运行)。除此之外,我真正想做的是了解Java代理的类加载工作原理。我能找到的最好的文档是在,这是相当稀疏的。它所说的关于类装入的全部内容是,Premain类将由系统类装入器装入。我看到一篇博客文章,建议不需要将jar放在类路径上,因为-javaagent JVM参数会处理这个问题,所以看起来我不应该将SizeOf jar添加为AS7模块。我遗漏了什么吗?

需要执行以下操作:

  • 为代理创建模块:创建文件夹modules/net/sourceforge/sizeof/main并添加sizeof.jar和module.xml
  • 将模块添加到引导配置:将JBOSS\u MODULES\u SYSTEM\u PKGS=“net.sourceforge.sizeof”添加到bin/standalone.conf
  • 同样在bin/standalone.conf中,将-javaagent:../modules/net/sourceforge/sizeof/main/sizeof.jar追加到JAVA_OPTS