Отрицательное время от JSP компилятора - PullRequest
8 голосов
/ 21 декабря 2011

Что может быть причиной такой ошибки? Javadoc для File.java говорит, что выдает это исключение, если передается в отрицательном значении. Поэтому вопрос в том, почему яшма переходит в отрицательное значение. Я искал источники яшмы, но я не нашел те, которые точно соответствуют тому, что я использую, номера строк не совсем совпадают. Версия, которую я установил, устанавливает время последнего изменения из File.lastModified, которое никогда не должно возвращать отрицательное значение, согласно javadoc.

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)

...

ОБНОВЛЕНИЕ: я скачал исходники для Tomcat и прочитал их. Соответствующий код из Compile.java:

375   File javaFile = new File(ctxt.getServletJavaFileName());
376   Long jspLastModified = ctxt.getLastModified(ctxt.getJspFile());
377   javaFile.setLastModified(jspLastModified.longValue());

ctxt - это JspCompilationContext, который услужливо возвращает -1 по умолчанию, если есть какие-либо ошибки, и File выдает IllegalArgumentException из отрицательного аргумента. Я до сих пор не знаю, почему я получаю ошибку, по крайней мере, я знаю, откуда исходит IllegalArgumentException.

Ответы [ 4 ]

5 голосов
/ 28 мая 2015

У меня была такая же проблема с 7.0.27, когда я развертывал приложения из IntelliJ Idea с косой чертой в контексте приложения - удаление работало для меня

4 голосов
/ 24 октября 2012

Я получал эту ошибку, когда в моем файле WAR были пробелы и точки в названии. Удаление их устранило проблему.

3 голосов
/ 18 октября 2012

Ошибка, если файл или содержащая его папка содержат арифметические символы.С тех пор ошибка была исправлена ​​на 7.0.27 .

Я на самом деле работаю 7.0.32 и все еще сталкиваюсь с этой проблемой, но так как я заметил, что у нее были проблемы с арифметическими символами, я думаю, что 'буду проверять теорию.Конечно же, причина моей проблемы была в том, что имя содержащей папки содержало пробел.Я удалил пробел в имени папки, и он работает нормально.Я еще не изучил подробно, чтобы узнать, есть ли новая ошибка, сообщенная относительно места, но я проверю это и отправлю новую, если нет.

0 голосов
/ 21 декабря 2011

Похоже на ошибку в Tomcat.Попробуйте Tomcat 7.0.16, в котором он явно не устанавливает последнее изменение в сгенерированном файле Java.После этой версии это было изменено.Если он работает с 7.0.16, я бы сообщил ошибку парням из Tomcat с максимально подробной информацией о платформе (в Redhat 5 недостаточно информации).

...