Điều gì có thể gây ra lỗi như thế này? Javadoc cho File.java nói rằng nó sẽ ném ngoại lệ này nếu được truyền trong một giá trị âm. Vì vậy, câu hỏi là, tại sao jasper đi qua trong một giá trị tiêu cực. Tôi tìm kiếm các nguồn jasper, nhưng tôi không tìm thấy những nguồn phù hợp chính xác với những gì tôi đang chạy, các số dòng không hoàn toàn phù hợp. Phiên bản tôi đã đặt thời gian sửa đổi lần cuối từ File.lastModified, không bao giờ nên trả về giá trị âm, theo javadoc.Thời gian tiêu cực từ trình biên dịch JSP
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.IllegalArgumentException: Negative time
at java.io.File.setLastModified(File.java:1258)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:376)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
...
UPDATE: Tôi đã tải về nguồn cho Tomcat và đọc qua các nguồn. Các mã có liên quan từ Compile.java là:
375 File javaFile = new File(ctxt.getServletJavaFileName());
376 Long jspLastModified = ctxt.getLastModified(ctxt.getJspFile());
377 javaFile.setLastModified(jspLastModified.longValue());
ctxt là một JspCompilationContext, mà helpfully trả về -1 theo mặc định nếu có bất kỳ sai sót, và File ném IllegalArgumentException từ một cuộc tranh luận tiêu cực. Tôi vẫn không biết tại sao tôi nhận được một lỗi, ít nhất tôi biết nơi IllegalArgumentException là đến từ.
Phiên bản Tomcat nào? Kiến trúc/phiên bản/kiến trúc nền tảng gì? Những gì JDK làm/phiên bản? – BalusC
Tomcat 7, JDK 6, nền tảng là Redhat 5 – mmorrisson
Cụ thể hơn trong các phiên bản. Hiện tại có 23 phiên bản Tomcat 7 khác nhau với phiên bản mới nhất là 7.0.23. – BalusC