1

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

语境 :

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

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

测试

我在同一目录中将 xxx.jsp 复制到 xxxNew.jsp 我可以毫无问题地访问 xxxNew.jsp(所以没有编码问题)所以我做了一个从 xxx.jsp 到 xxx1.jsp 的 mv 并且没有访问新命名的 jsp 的问题我删除了 tmp 目录中的 xxx.class 我将 mv 返回到第一个名称(xxx.jsp),但仍然在 tmp 目录中使用新的 xxx.class 得到错误。websphere 中是否有可以解释这一点的类缓存?(在 war 模块中找不到 dynacache 的 cachespec.xml)。

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

谢谢!

4

3 回答 3

0

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

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

于 2013-10-10T13:16:32.337 回答
0

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

于 2013-10-10T14:36:54.663 回答
0

此错误是由于 websphere 不正确的日志:未显示原始异常。

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

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

问候。

于 2018-09-25T09:09:51.550 回答