【问题标题】:Cause of 'tmpFile.renameTo(classFile) failed' during JSP compilationJSP 编译期间“tmpFile.renameTo(classFile) failed”的原因
【发布时间】:2010-09-10 21:52:37
【问题描述】:

最近,我开始在 JBOss 4.0.5 JSP 应用程序中遇到奇怪的行为。 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),页面最终被编译并呈现正常。

平台是Windows 7-Pro 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 包含的版本)。

谢谢。

【问题讨论】:

    标签: jsp jboss tomcat5.5


    【解决方案1】:

    快进四年到 2014 年。Tomcat 8、Java 8、Windows 8,同样的错误。经过半天的挫折,结果证明是由我的防病毒软件引起的,在我的情况下是 McAfee。我走极端并卸载了整个东西。但可能我可以进行一些设置以从实时扫描中排除 Tomcat 目录。

    【讨论】:

    • 2015 年,同样的事情,非常感谢你,我自己永远无法捕捉到它。我认为原因是我在使用 PC 期间不小心启用了 McAfee 一次或多次向您显示的无数窗口之一,但我继续像您一样完全卸载它,因为您知道,PC 制造商和他们包含一些无用的杀毒软件,这些软件在您第一次启动机器时已经过期。
    【解决方案2】:

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

    【讨论】:

    • 如何从原始问题中判断它是哪个文件夹?
    • 这正是问题所在。我使我的应用程序的根目录与所有子文件夹都可写,这个问题就消失了。谢谢。
    【解决方案3】:

    这与Tomcat 5.5 bug 38713 有关。它似乎在 Tomcat 5.5.25 及更高版本中已修复。

    【讨论】:

    • 这似乎是一个相当老的错误。竞争条件的理论可能是正确的,因为团队中有其他人使用 Windows 7(尽管不是 64 位 Pro)和相同的 JBoss / Tomcat 没有问题。
    • 我尝试将 JBoss 4.0.5 中的 Tomcat 升级到 5.5.30 - 说明在这里:itapproaches.blogspot.com/2010/08/… - 不幸的是,我仍然看到错误,尽管要少得多。
    • 当 Tomcat 6 部署在 STS 3.3 内部时,这种情况仍然会发生
    • 只想声明我正在使用 Windows 8.1 和 Tomcat 7 并收到此错误
    • 我正在使用 tomcat-7.0.42 并且间歇性地收到该错误。在我阅读stackoverflow.com/a/14361529/1565521 的评论后,我意识到tomcat 目录中的某些文件夹是只读的。我右键单击tomcat-7.0.42目录并取消选中只读框。事情照办了。所以它绝对不仅仅是与 Tomcat 5.5 相关的东西,它也会影响到以后的版本。
    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 2012-01-24
    • 2018-02-25
    • 1970-01-01
    • 2016-03-28
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多