4.2.3. 查找 JBoss 模块依赖关系
要解决依赖关系,首先,通过查找
EAP_HOME/modules/system/layers/base/ 目录找到包含 ClassNotFoundException 指定的类的模块。如果你找到这个类的模块,你必须在 manifest 条目里添加一个依赖关系。
例如,如果你在日志里看到 ClassNotFoundException 跟踪信息:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
通过下列步骤来查找包含这个类的 JBoss 模块:
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
from [Module "deployment.TopicIndex.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:188)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
from [Module "deployment.TopicIndex.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:188)
过程 4.9.
- 首先确定这个类是否有明显的模块。
- 进入
EAP_HOME/modules/system/layers/base/目录并查找对应ClassNotFoundException里命名的类的模块路径。找到模块路径org/apache/commons/logging/。 - 打开
EAP_HOME/modules/system/layers/base/org/apache/commons/logging/main/module.xml文件并找到模块名称。在这个例子里是 "org.apache.commons.logging"。 - 添加模块名到
MANIFEST.MF文件里的依赖关系:Manifest-Version: 1.0 Dependencies: org.apache.commons.logging
Manifest-Version: 1.0 Dependencies: org.apache.commons.loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果这个类没有明显的模块路径,你可能需要在另一个位置寻找依赖关系。
- 在 Tattletale 报告里找到名为
ClassNotFoundException的类。 - 在
EAP_HOME/modules目录里找到包含 JAR 的模块以及和前一步骤里相同的模块名。