在JSP编译期间'tmpFile.renameTo(classFile)失败的原因'

Mir*_* A. 8 jboss jsp tomcat5.5

最近,我开始在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)
Run Code Online (Sandbox Code Playgroud)

在几次重试之后(少数是0到7),页面最终被编译并呈现OK.

平台是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)
Run Code Online (Sandbox Code Playgroud)

JBoss版本:

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

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

谢谢.

Joh*_*ick 8

快进四年到2014年.Tomcat 8,Java 8,Windows 8,同样的错误.经过半天的挫折之后,事实证明这是由我的防病毒软件造成的,在我的案例中是McAfee.我走极端,卸下了整件事.但是可能有一些设置我可以将Tomcat目录从实时扫描中排除.


小智 5

抛出IOException的文件夹实际上是只读的,在将其更改为可写入后,工作正常.

  • 你如何从原始问题告诉它是哪个文件夹? (2认同)
  • 这正是错误的.我使我的应用程序的根目录与所有子文件夹可写,这个问题消失了.谢谢. (2认同)

Bal*_*usC 4

这与Tomcat 5.5 bug 38713相关。Tomcat 5.5.25 以后似乎已修复。