无法为JSP编译类

时间:2011-05-07 08:27:49

标签: 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的servelet-api.jar目录中有lib

请帮我解决。

8 个答案:

答案 0 :(得分:10)

从错误来看,您似乎正在尝试导入不属于类的内容。

如果您的MyFunctions是一个类,则应该像这样导入它:

<%@page import="com.TransportPortal.MyFunctions"%>

如果它是一个包,你想要导入包中的所有内容,你应该这样做:

<%@page import="com.TransportPortal.MyFunctions.* "%>

修改

有两种情况会给你这个错误,编辑覆盖两者。

答案 1 :(得分:7)

它可能与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/

答案 2 :(得分:2)

要么你可以降级到JRE 1.7.49

或者如果你想在JRE 8上运行

修复步骤: -

1.转到Liferay Tomcat的Lib文件夹。 2.更换: - ecj-3.7.2.jar与ecj-4.4.2。 3.重新启动服务器

答案 3 :(得分:1)

我在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并使用它运行项目后,它将取得成功

我希望有人能用它来解决上述异常

答案 4 :(得分:0)

  

org.apache.jasper.JasperException:无法为JSP编译类:

enter image

答案 5 :(得分:0)

尝试将其添加到您的web.xml:

N = |C| = |A| * |B|

答案 6 :(得分:0)

就我而言,我使用的是6.0.24 Tomcat版本(带有JDK 1.8),并且通过升级到6.0.37版本解决了该问题。

此外,如果将新的tomcat版本安装在其他文件夹中,请不要忘记将以前的 / conf 文件夹复制到新的安装文件夹中。

答案 7 :(得分:-2)

<pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>       
                <version>2.2</version>
            </plugin>
        </plugins>