2011-12-21 13 views
7

このようなエラーを引き起こす原因は何ですか? File.javaのJavadocは、負の値で渡された場合、この例外をスローします。ですから、なぜジャスパーが負の値をとっているのでしょうか?私はジャスパーソースを探しましたが、私が実行しているものとまったく同じものは見つけられませんでした。ライン番号はあまり一致しません。私が持っているバージョンでは、File.lastModifiedから最後に変更された時刻が設定されます。これは、javadocに従って、負の値を返すべきではありません。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:私はTomcat用のソースをダウンロードしてソースをお読みください。 Compile.javaから関連するコードは次のとおりです。

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

CTXTは親切にエラーがある場合は、デフォルトでは-1を返し、ファイルは負の引数からIllegalArgumentExceptionをスローしJspCompilationContext、です。私はまだ私がなぜエラーを受けているのか分からない。少なくとも、私はIllegalArgumentExceptionがどこから来ているのか知っている。

+0

を働い削除?どのプラットフォームがバージョン/アーキテクチャを作るのですか? JDKの作成/バージョン – BalusC

+0

Tomcat 7、JDK 6、プラットフォームはRedhat 5 – mmorrisson

+0

より具体的なバージョンでお願いします。現在、23種類のTomcat 7バージョンがあり、最新バージョンは7.0.23です。 – BalusC

答えて

0

Tomcatのバグのようです。 Tomcat 7.0.16を試してください。そこには生成されたJavaファイルで最後に変更されたものが明示的に設定されていません。そのバージョンの後に変更されました。 7.0.16で動作する場合は、reportというTomcatの人に、プラットフォームに関する情報をできるだけ多くのバグ(Re​​dhat 5では情報が不足している)にしていました。

3

ファイルまたは含むフォルダに算術文字が含まれているとバグがあります。バグhas since been fixed as of 7.0.27

私は実際に7.0.32を実行していますが、この問題に遭遇しましたが、算術文字に問題があることに気付いたので、私は理論をテストします。確かに、私の問題の理由は、フォルダ名にスペース文字が含まれていたためです。私はフォルダ名のスペースを削除し、正常に動作します。スペースに関して新しいバグが報告されているかどうかを調べるためにまだ深くは見ていませんが、もしそうでなければチェックして新しいものを提出します。

4

WARファイルの名前にスペースとピリオドが含まれていると、このエラーが発生していました。それらを削除すると問題が解決しました。

+0

WARファイルにハイフン ' - 'がついていても問題があった –

5

私はアプリケーションコンテキストで最後のスラッシュとのIntelliJアイデアからアプリケーションを展開されたとき、私は7.0.27と同じ問題を抱えていた - それは私のためにどのようなTomcatのバージョン

+0

Intellij 2016.1で同じ問題が起きました。 Tomcat設定のアプリケーションコンテキストの末尾にあるスラッシュを削除した後、再び動作します。ありがとう。 – Julius

関連する問題