我在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
。
请帮我解决。
答案 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编译类:
答案 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>