ClassNotFoundException与java代理(-javaagent:jarpath)
我的问题的根源是,我试图从部署在JBoss AS7上的web应用程序中使用SizeOf,并获得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)。但
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