无法编译JSP的类

flmtquvp  于 2022-12-07  发布在  其他
关注(0)|答案(9)|浏览(132)

我正在处理一个JSP项目。在使用Netbeans和Tomcat6服务器运行该项目时,我遇到了以下异常,

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
请帮我解决一下。

qhhrdooz

qhhrdooz1#

从错误中可以看出,您尝试导入的内容不是类。
如果您的MyFunctions是一个类,则应按如下方式导入它:

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

如果它是一个包,并且您希望导入包中的所有内容,则应执行以下操作:

<%@page import="com.TransportPortal.MyFunctions.* "%>
    • 编辑**:

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

7vux5j2d

7vux5j2d2#

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

vd8tlhqk

vd8tlhqk3#

您可以降级到JRE 1.7.49
或者如果要在JRE 8上运行
修复步骤:-

  • 转到Liferay Tomcat的Lib文件夹。
  • 将-ecj-3.7.2.瓶替换为ecj-4.4.2.瓶。
  • 重新启动服务器
ua4mk5z4

ua4mk5z44#

我在eclipse neon版本中遇到了同样的异常,异常如下所示

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)

我使用Apache tomcat 8的maven插件,我试图更新,但面临同样的问题。
在我下载了新的外部apache tomcat版本8.5.14并使用它运行项目后,它将为我成功
我希望有人对解决上述例外情况有用

vohkndzv

vohkndzv5#

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

cu6pst1q

cu6pst1q6#

尝试将以下内容添加到您的web.xml:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/your-servlet-name.xml
    </param-value>
c6ubokkw

c6ubokkw7#

在我的例子中,我使用的是6.0.24 Tomcat版本(带有JDK 1.8),通过升级到6.0.37版本解决了这个问题。
此外,如果您将新的tomcat版本安装在不同的文件夹中,请不要忘记将以前版本的**/conf**文件夹复制到新的安装文件夹中。

tkclm6bt

tkclm6bt8#

This ERROR occurs because you are importing something which is not class.
this ERROR mostly occurs in <%@page import=" "%> in JSP Page Directive.
because it controls the processing of entire JSP pages. It gives direction to the server regarding the processing of page.
in below code try to import packages in "*" form so it will not give you this type of ERRORS. like <%@ import="java.io.*" %>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"  import="java.io.*"   %>

<%@ page import = "java.io.*" %> you will find error in this line . this code can help you to solve your error. by putting " * " in your importing package code..
I think this will help you. Thanks

nszi6y05

nszi6y059#

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

相关问题