带有java代理的ClassNotFoundException(-javaagent:jarpath)

时间:2012-07-31 00:16:36

标签: java jboss classloader jboss7.x agent

我的问题的根源是我正在尝试使用部署在JBoss AS7上的Web应用程序中的SizeOf sourceforge project并为ClassNotFoundException获取net.sourceforge.sizeof.SizeOf。我将-javaagent:/path_to_jar/SizeOf.jar添加到服务器的JAVA_OPTS,并在服务器启动时看到premain方法中的System.out.println(JAVAGENT:为类SizeOf调用premain instrumentation)。但是,当我尝试从我的servlet的doGet方法调用SizeOf.sizeOf(obj)时,应用程序失败并带有前面提到的ClassNotFoundException

如果有人能告诉我如何使用JBoss AS7,这将有所帮助(我在Eclipse运行配置中工作 - 相当于从命令行运行)。除了这一点之外,我真正想做的是了解类加载如何为Java代理工作。我能找到的最好的文档是the offical JVM docs,而且非常稀疏。关于类加载的所有内容都是系统类加载器将加载Premain-Class。我看到一篇博文,建议不需要将jar放在类路径上,因为-javaagent JVM参数会处理这个问题,因此看起来我不应该将SizeOf jar添加为AS7模块。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

需要执行以下操作:

  • 为代理创建模块:创建文件夹modules / net / sourceforge / sizeof / main并添加sizeof.jar和module.xml
  • 添加模块到引导配置:添加JBOSS_MODULES_SYSTEM_PKGS =" net.sourceforge.sizeof"到bin / standalone.conf
  • 同样在bin / standalone.conf中,将-javaageent:../ modules / net / sourceforge / sizeof / main / sizeof.jar附加到JAVA_OPTS