代码之家  ›  专栏  ›  技术社区  ›  Miro A.

jsp编译期间“tmpfile.renameto(classfile)failed”的原因

  •  8
  • Miro A.  · 技术社区  · 14 年前

    最近,我开始在JBoss4.0.5JSP应用程序中体验奇怪的行为。JSP编译在第一次(第二次、第三次)尝试时失败,但出现异常:

    17:24:29,909 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
    java.io.IOException: tmpFile.renameTo(classFile) failed
            at org.apache.jasper.compiler.SmapUtil$SDEInstaller.install(SmapUtil.java:245)
            at org.apache.jasper.compiler.SmapUtil.installSmap(SmapUtil.java:164)
            at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:429)
            at org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
            at org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
            at org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
            at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
            at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
            at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
            at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    

    经过几次重试(其中少数是0到7),页面最终会被编译并呈现为OK。

    平台是Windows 7Pro 64位,Java版本是

    c:\ATG\ATG2007.1>java -version
    java version "1.5.0_21"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_21-b01)
    Java HotSpot(TM) Client VM (build 1.5.0_21-b01, mixed mode)
    

    JBOSS版本:

    16:49:51,384 INFO  [Server] Release ID: JBoss [Zion] 4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)
    

    Tomcat版本是5.5(JBoss附带的版本)。

    谢谢。

    3 回复  |  直到 11 年前
        1
  •  4
  •   BalusC    14 年前

    这与 Tomcat 5.5 bug 38713 . 它似乎固定在Tomcat 5.5.25以后的版本中。

        2
  •  8
  •   John Fitzpatrick    11 年前

    快进四年到2014年。Tomcat 8,Java 8,Windows 8,同样的错误。经过半天的挫折,我发现这是由我的防病毒软件造成的,在我的情况下是McAfee。我走极端,把整个事情都抛到一边。但我可能做了一些设置,将Tomcat目录从实时扫描中排除。

        3
  •  5
  •   Feng Zhang    12 年前

    引发IOException的文件夹实际上是只读的,在将其更改为可写之后,一切正常。

    推荐文章