在JBoss 7.4.17容器安装AppDynamics Agent遇类未找到错误求助
解决方案:JBoss EAP 7.4镜像中安装AppDynamics Agent解决NoClassDefFoundError
先确认WildFly Common依赖存在
报错java.lang.NoClassDefFoundError: org/wildfly/common/net/HostName本质是org.wildfly.common包没被正确加载。先检查镜像内的/opt/eap/modules/system/layers/base/org/wildfly/common/main目录,里面应该有wildfly-common-*.jar和对应的module.xml——官方镜像默认是有的,但如果Agent的类加载路径没包含JBoss的模块,就会出问题。确保日志管理器参数真的生效
直接在standalone.conf末尾追加参数时,一定要用变量累加的方式,避免被脚本覆盖:# 追加AppDynamics Agent路径 JAVA_OPTS="$JAVA_OPTS -javaagent:/opt/appdynamics/javaagent.jar" # 强制指定JBoss日志管理器 JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager" # 将依赖包加入启动类路径,优先加载 JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:/opt/eap/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-*.jar:/opt/eap/modules/system/layers/base/org/wildfly/common/main/wildfly-common-*.jar"单独写一行的
-Djava.util.logging.manager=...很可能被镜像自带的启动脚本里的默认配置覆盖,必须用$JAVA_OPTS累加的方式。调整Agent的类加载规则
修改AppDynamics Agent的配置文件agent/conf/app-agent-config.xml,添加类加载排除,避免Agent拦截JBoss的核心类:<classpath-excludes> <exclude>org.wildfly.common.*</exclude> <exclude>org.jboss.logmanager.*</exclude> </classpath-excludes>嫌改文件麻烦的话,也可以直接在启动参数里加:
JAVA_OPTS="$JAVA_OPTS -Dappdynamics.agent.classpath.excludes=org.wildfly.common.*,org.jboss.logmanager.*"验证配置是否生效
启动JBoss后,先看启动日志里有没有JBoss LogManager initialized的信息,确认日志管理器加载成功;再去Agent的agent/logs/目录下看日志,检查有没有类加载相关的报错。
内容的提问来源于stack exchange,提问作者Mr. E
相关产品推荐
相关产品推荐

