Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 已编译JSP类的ClassNotFoundException(Tomcat、Jasper)_Java_Jsp_Tomcat_Tomcat6_Urlclassloader - Fatal编程技术网

Java 已编译JSP类的ClassNotFoundException(Tomcat、Jasper)

Java 已编译JSP类的ClassNotFoundException(Tomcat、Jasper),java,jsp,tomcat,tomcat6,urlclassloader,Java,Jsp,Tomcat,Tomcat6,Urlclassloader,我正在诊断一个偶尔出现的客户问题:ClassNotFoundExceptions用于从JSP编译的类。大多数情况下,一切正常,但Tomcat常常(可能每两周在十几个ish节点上加载一次)无法加载特定JSP的类文件(通常只有一个页面,看起来是随机的)。类文件存在于“work”目录中。它似乎没有腐败。我可以删除它和相应的.java文件,并在下一次请求时(相同地)重新创建它-但是Tomcat继续报告ClassNotFoundException。重新启动Tomcat解决了这个问题 站台详情: RedHa

我正在诊断一个偶尔出现的客户问题:
ClassNotFoundException
s用于从JSP编译的类。大多数情况下,一切正常,但Tomcat常常(可能每两周在十几个ish节点上加载一次)无法加载特定JSP的类文件(通常只有一个页面,看起来是随机的)。类文件存在于“work”目录中。它似乎没有腐败。我可以删除它和相应的.java文件,并在下一次请求时(相同地)重新创建它-但是Tomcat继续报告
ClassNotFoundException
。重新启动Tomcat解决了这个问题

站台详情:

  • RedHat Enterprise Linux(RHEL)6
  • Tomcat 6.0.24-72(随yum一起安装的官方“tomcat6”软件包)
  • OpenJDK Java 1.6.0_32
  • 我一直在挖掘Jasper JSP编译器的源代码,以及它用来加载这些类的JVM类加载器代码(
    org.apache.Jasper.servlet.JasperLoader
    ,基于
    java.net.URLClassLoader
    )。如果我正确地阅读了代码,每个JSP页面都会在第一次访问特定JSP时创建一个相应的“上下文”对象(
    JspCompilationContext
    /
    JspServletWrapper
    )。
    JspCompilationContext
    包含与页面关联的
    JasperLoader

    我最好的理论是类加载器中的某些东西正在缓存对文件系统inode的引用,例如,由于文件系统维护活动而变得无效的文件系统inode。但是,我在类加载器代码中看不到任何可以这样做的内容,而且如果重新编译JSP,似乎应该创建一个新的类加载器,而这样的重新编译并不能解决问题。所以,我最好的理论是不好的


    不幸的是,这只能在客户站点上看到,并且不能随意复制,因此我直接调试的能力是有限的。因此,我正在寻找任何好的可能性进行调查。

    只是好奇您是否能够追踪到这一点,在rhel、tomcat 7、oracle java 1上看到同样的问题。7@kharyam不幸的是,没有。这个问题刚刚在客户端停止发生,所以我不必担心。在某种程度上,听到有人看到它是很高兴的,但是-如果你发现了什么,请发一篇后续文章!