来自websphere的java.lang.NoClassDefFoundError

时间:2013-08-26 12:52:37

标签: java java-ee websphere websphere-7

我有一个我无法弄清楚的问题。

背景:

是7.0.0.19版本(没有preCompileJsp) 由以下引起:java.lang.NoClassDefFoundError:org / apache / jsp / _xxx(错误名称:com / ibm / _jsp / _xxx)java.lang.ClassLoader.defineClassImpl(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader) .java:275)位于com.ibm.ws.jsp的com.ibm.ws.jsp.webcontainerext.JSPExtensionClassLoader.defClass(JSPExtensionClassLoader.java:181)的java.lang.ClassLoader.defineClass(ClassLoader.java:212)。 webcontainerext.JSPExtensionClassLoader._loadClass(JSPExtensionClassLoader.java:133)

它是唯一提供问题的JSP,并且仅在特定环境中(在具有相同配置的其他环境中没有问题)xxx.class很好地存在于我的profile / tmp目录中,其他jsp位于同一目录中(这一切都没有问题)文件系统不满。

测试

我在同一目录下为xxxNew.jsp复制了xxx.jsp 我可以毫无问题地访问xxxNew.jsp(因此没有编码问题) 所以我从xxx.jsp到xxx1.jsp做了一个mv,没有问题来访问jsp new named 我删除了tmp目录中的xxx.class 我将mv恢复为第一个名称(xxx.jsp),并且仍然在tmp目录中使用新的xxx.class获取错误。 在websphere中的任何地方都有一个类缓存可以解释这个吗? (在war模块中找不到dynacache的cachespec.xml)。

为什么Websphere尝试从org.apache.jsp包中找到一个类而不是从com.ibm._jsp中找到一个类? (AS如何选择从URL到类的映射?)

Thxs!

3 个答案:

答案 0 :(得分:0)

确保您没有在webapp类路径中包含任何JSP引擎或可能与WebSphere的运行时不兼容的标准JSP库的其他实现。此外,一旦删除所有可能不兼容的jar,请尝试从JSP编译中删除生成的类(位于{WAS_HOME} / AppServer / profiles / {YOUR_PROFILE} / temp下),因此将重新编译并丢弃任何生成的过时.class以前的类路径状态。

如果您在应用程序的类路径中发布了JAR列表,那将会很有帮助。

答案 1 :(得分:0)

尝试在WAS控制台上更改Web应用程序类加载策略:PARENT_FIRST / PARENT_LAST。

答案 2 :(得分:0)

此错误是由于Websphere错误日志所致:原始异常未显示。

例如,您应该检查页面中是否没有缺少的jsp标记库。

请参见https://www-01.ibm.com/support/docview.wss?uid=swg1PI09596

致谢。