[英]Unable to compile class for JSP
我在一個 JSP 項目中工作。 在使用 Netbeans 和 Tomcat 6 服務器運行項目時,出現以下異常,
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 8 in the generated java file
Only a type can be imported. com.TransportPortal.MyFunctions resolves to a package
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
它在 Apache Tomcat 的lib
目錄中有servelet-api.jar
。
請幫我解決它。
從錯誤來看,您似乎正在嘗試導入不是類的內容。
如果你的MyFunctions
是一個類,你應該像這樣導入它:
<%@page import="com.TransportPortal.MyFunctions"%>
如果它是一個包並且您想導入包中的所有內容,您應該這樣做:
<%@page import="com.TransportPortal.MyFunctions.* "%>
編輯:
有兩種情況會給您帶來此錯誤,經過編輯以涵蓋這兩種情況。
它可能與 Java JRE 版本有關。
在我的情況下,我需要 Tomcat 6.0.26,它與 JRE 1.8.0_91 出現相同的錯誤。 降級到 JRE 1.7.49 解決了這個問題。
您可能會在以下位置找到更多信息: http : //www.howopensource.com/2015/07/unable-to-compile-class-for-jsp-the-type-java-util-mapentry-cannot-be-resolved/
您可以降級到 JRE 1.7.49
或者如果你想在 JRE 8 上運行
修復步驟:-
轉到 Liferay Tomcat 的 Lib 文件夾。
將 :- ecj-3.7.2.jar 替換為 ecj-4.4.2。
重啟服務器
我在 eclipse 霓虹燈版本中遇到了同樣的異常,如下所示
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:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
我使用 maven 插件的 Apache tomcat 8,我嘗試更新它但面臨同樣的問題。
在我下載新的外部 apache tomcat 版本 8.5.14 並使用它運行項目后,它對我來說會成功
我希望有人對解決上述異常有用
org.apache.jasper.JasperException:無法為 JSP 編譯類:
嘗試將其添加到您的 web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/your-servlet-name.xml
</param-value>
就我而言,我使用的是 6.0.24 Tomcat 版本(使用 JDK 1.8)並通過升級到 6.0.37 版本解決了該問題。
另外,如果您將新版 tomcat 安裝在不同的文件夾中,請不要忘記將您之前版本的/conf文件夾復制到新的安裝文件夾中。
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.