【问题标题】:ClassNotFoundException with java agent (-javaagent:jarpath)带有 java 代理的 ClassNotFoundException (-javaagent:jarpath)
【发布时间】:2012-07-31 00:16:35
【问题描述】:

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

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

【问题讨论】:

    标签: java jboss classloader jboss7.x agent


    【解决方案1】:

    需要做到以下几点:

    • 为代理创建一个模块:创建文件夹 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 2012-01-06
      • 2018-07-28
      • 2012-11-22
      • 2011-12-12
      • 2016-06-15
      • 1970-01-01
      相关资源
      最近更新 更多