0

我的问题的根源是我正在尝试从部署在 JBoss AS7 上的 Web 应用程序中使用 SizeOf sourceforge 项目并获得一个ClassNotFoundExceptionfor net.sourceforge.sizeof.SizeOf. 我添加-javaagent:/path_to_jar/SizeOf.jar到服务器JAVA_OPTSSystem.out.println在服务器启动时查看 premain 方法(JAVAGENT:为类 SizeOf 调用 premain 工具)。但是,当我尝试SizeOf.sizeOf(obj)从我的 servlet 的 doGet 方法调用时,应用程序失败并出现上述ClassNotFoundException.

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

4

1 回答 1

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
于 2012-09-13T01:40:04.917 回答