我有一个我无法弄清楚的问题。
语境 :
- 是 7.0.0.19 版本(没有 preCompileJsp)
原因:java.lang.ClassLoader.defineClassImpl(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader) 的 java.lang.NoClassDefFoundError: org/apache/jsp/_xxx (错误名称:com/ibm/_jsp/_xxx) .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 到类的映射?)
谢谢!