2011-12-21 6 views
7

Đ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ừ.

+0

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

+0

Tomcat 7, JDK 6, nền tảng là Redhat 5 – mmorrisson

+0

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

Trả lời

0

Trông giống như một lỗi trong Tomcat. Hãy thử Tomcat 7.0.16, trong đó nó không đặt rõ ràng sửa đổi cuối cùng trên tệp Java được tạo. Sau phiên bản đó nó đã được thay đổi. Nếu nó hoạt động với 7.0.16, tôi muốn report một lỗi đối với những kẻ Tomcat với càng nhiều chi tiết càng tốt về nền tảng này (Redhat 5 không đủ thông tin).

3

Có lỗi nếu tệp hoặc thư mục chứa chứa các ký tự số học. Lỗi has since been fixed as of 7.0.27.

Tôi thực sự đang chạy 7.0.32 và vẫn gặp vấn đề này nhưng vì tôi nhận thấy nó có sự cố với các ký tự số học, mặc dù tôi muốn thử nghiệm một lý thuyết. Chắc chắn, lý do cho vấn đề của tôi là vì tên thư mục chứa một ký tự khoảng trắng. Tôi đã xóa không gian trong tên thư mục và nó hoạt động tốt. Tôi đã không nhìn sâu vào để tìm ra nếu có một lỗi mới được báo cáo liên quan đến không gian nhưng tôi sẽ kiểm tra nó ra và gửi một cái mới nếu không.

4

Tôi đã nhận được lỗi này khi tệp WAR của tôi có dấu cách và dấu chấm trong tên của nó. Việc xóa chúng đã khắc phục sự cố.

+0

Đã xảy ra sự cố ngay cả khi tệp WAR có dấu gạch nối '-' –

5

Tôi gặp vấn đề tương tự với 7.0.27 khi tôi triển khai ứng dụng từ IntelliJ Idea với dấu gạch chéo trong ngữ cảnh ứng dụng - xóa nó hoạt động cho tôi

+0

Được chuyển thành cùng một vấn đề trong Intellij 2016.1. Sau khi loại bỏ dấu gạch chéo sau trong bối cảnh ứng dụng trong cấu hình Tomcat nó hoạt động trở lại. Cảm ơn. – Julius