无法编译JSP类

15

我正在一个 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目录中包含了servlet-api.jar

请帮我解决这个问题。

9个回答

12

从错误信息看,似乎你试图导入的不是一个类。

如果你的 MyFunctions 是一个类,那么应该这样导入:

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

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

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

编辑:

会出现这个错误的情况有两种,本文已经进行了涵盖。


9

谢谢。对于我的情况,我想继续使用最新的JDK。我刚刚升级到1.8.101版本。从maven tomcat embedded 67 的迁移解决了这个问题。 - oak

3

您可以选择降级到JRE 1.7.49,或者如果您想要在JRE 8上运行,则需要进行以下步骤来解决问题:

  • 进入Liferay Tomcat的Lib文件夹。

  • 将ecj-3.7.2.jar替换为ecj-4.4.2。

  • 重新启动服务器。


我在我的Tomcat lib中有ecj4.6.1,但仍然遇到相同的问题。 - sambatha

1
我在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)

我使用 Maven 插件的 Apache Tomcat 8,尝试更新但遇到了相同的问题。
之后,我下载了新的外部 Apache Tomcat 8.5.14 版本,并使用它运行该项目,这样就成功了。
我希望有人能从中受益,以解决上述异常。

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

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

enter image


1
项目目的-->Web部署程序--->添加---->Java构建路径条目--->Maven依赖 - patel jigar

0

这个错误是因为你导入了一个不是类的东西。

这个错误通常发生在 JSP 页面指令中的 <%@page import=" "%>。

因为它控制整个 JSP 页面的处理。它向服务器提供有关页面处理的方向。

在下面的代码中,尝试以“*”形式导入包,这样就不会出现这种类型的错误。例如:<%@ import="java.io.*" %>

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

<%@ page import = "java.io.*" %> 这一行代码中可能会出现错误。通过在导入包代码中添加“*”,可以帮助您解决错误。

我认为这会对您有所帮助。 谢谢。


0

尝试将以下内容添加到你的 web.xml 文件中:

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


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


请问您能否提供一些代码上下文信息?它放在哪里,如何解决问题的疑问? - Bernhard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接