2016-05-02 98 views
10

我們有一個在JBoss 6.1上運行的傳統JavaEE應用程序。當使用Java 1.8.0_92運行JBoss6時,我們得到以下錯誤。請幫我解決或給這個錯誤一些提示。無法使用JDK1.8.0_92編譯JSP文件

16:49:32,888 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/webSSO].[jsp]] Servlet.service() for servlet jsp threw exception: org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 1 in the generated java file 
The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files 

Stacktrace: 
     at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) [:6.1.0.Final] 
     at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) [:6.1.0.Final] 
     at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:446) [:6.1.0.Final] 
     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:362) [:6.1.0.Final] 
     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) [:6.1.0.Final] 
     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327) [:6.1.0.Final] 
     at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:607) [:6.1.0.Final] 
     at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:312) [:6.1.0.Final] 
     at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) [:6.1.0.Final] 
     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) [:6.1.0.Final] 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] 

注:它工作正常,高達(Java 1.8.0_77)

+0

聽起來像是正在應用的安全規則。 (我想不出有什麼理由讓JSP需要訪問甚至取決於ObjectInputStream的任何東西。) – chrylis

+3

我也在JBoss 5.1中看到了這一點。不要認爲這是一個JBoss問題,而是一個jdk問題。 – user1459641

+4

我與Tomcat 8的問題完全相同,所以它似乎不是JBoss相關的 –

回答

1

正如你可以看到red hat web site JDK 1.8只支持jboss的6.3.3及以上。

+4

好的,但是爲什麼Java 1.8.0_91/92會出現問題,但是1.8.0_77不會呢?它們都是JDK 1.8。 – mzjn

0

它適用於較新的編譯器,如果你從源代碼編譯你的tomcat。您只需下載源代碼,然後按照BUILDING.txt中的幾條構建指令進行操作。

+1

所以你只需要「從源代碼編譯你的tomcat」?請解釋爲什麼這是正確的解決方案。爲什麼Java 1.8.0_91/92中存在問題,但是1.8.0_77中沒有問題? – mzjn

0

我使用了最新版本的tomcat,即Tomcat 9,它解決了這個問題。