【发布时间】:2014-09-15 06:10:12
【问题描述】:
在 WAS-8.0/8.5 中,如何确认所有 .jars/classes 都由服务器加载?
问题是这样的,我在 WAS-8.5 中遇到 NoClassDefFoundError,因为该类已经部署但无法在运行时加载。
【问题讨论】:
-
如果您想查看已加载的类,可以使用 WAS 管理控制台查看:疑难解答->类加载器查看器->选择您的应用程序->选择 WAR/EJB jar。注意:您必须启用类加载器查看器服务。另外,请显示堆栈跟踪和 EAR 结构以及此类位于何处的信息(在实用程序 JAR/WAR/EJB JAR 中)。
-
在 WAS-8.5 中,Troubleshooting->Class loader viewer 选项不可用。它具有-诊断跟踪服务/记录和跟踪/更改日志详细级别/NCSA 访问和 HTTP 错误记录。我已启用“其他属性 -> 类加载器查看器服务。
-
以下是 .EAR 结构 - DummyPortal.EAR/lib、DummyPortal.EAR/lib/Counter.jar、DummyPortal/DummyWar.WAR、DummyPortal/DummyWar/MyJsp.jsp。在“MyJsp.jsp”中,我正在从“Counter.jar”访问一个类,并且出现“NoClassDefFoundError”异常。不确定,为什么它不指“Counter.jar”。这会是 WAS-8.5 中的错误吗?
-
我猜你的 WAR 没有看到 JAR 中的类,因为它在部署程序集中缺少一个条目。 WAS 从 WAR MANIFEST.MF 文件中读取它(它位于 META-INF 目录中)。您是否将 EAR lib 目录配置为 lib(右键单击 EAR->Properties->Deployment Assembly)?如果是,则必须将 Counter.jar 添加到 WAR 部署程序集中(右键单击 DummyWar WAR 项目->属性->部署程序集->选项卡清单条目->添加)。
-
好的,魔术棒我会试试这个并很快更新,干杯
标签: jakarta-ee build websphere war ear