代码之家  ›  专栏  ›  技术社区  ›  Dave

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

  •  0
  • Dave  · 技术社区  · 13 年前

    我问题的根源是我试图使用SizeOf sourceforge project 从部署在JBoss AS7上的web应用程序获取 ClassNotFoundException 对于 net.sourceforge.sizeof.SizeOf .我补充道 -javaagent:/path_to_jar/SizeOf.jar 到服务器的 JAVA_OPTS 并查看 System.out.println 来自服务器启动时的premain方法(JAVAGENT:为类SizeOf调用premain指令插入)。然而,当我试图打电话 SizeOf.sizeOf(obj) 在servlet的doGet方法中,应用程序失败,出现前面提到的情况 ClassNotFoundException类未找到异常

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

    1 回复  |  直到 13 年前
        1
  •  2
  •   Dave    12 年前

    需要执行以下操作:

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