簡體   English   中英

無法為 JSP 編譯類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM