为了账号安全,请及时绑定邮箱和手机立即绑定

无法为JSP编译类:无法解析类型java.util.Map $ Entry。从所需的.class

/ 猿问

无法为JSP编译类:无法解析类型java.util.Map $ Entry。从所需的.class

繁星点点滴滴 2019-11-15 10:40:50

我无法获取tomcat7来编译jsps。直到运行示例servlet一切正常,并且服务已启动并正在运行。我正在运行oracle java 8。


谁能指出我正确的方向?


这是堆栈跟踪:


type Exception report


message Unable to compile class for JSP:


description The server encountered an internal error that prevented it from fulfilling this request.


exception


org.apache.jasper.JasperException: Unable to compile class for JSP: 


An error occurred at line: 1 in the generated java file

The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files


Stacktrace:

    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)

    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)

    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)

    org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)

    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)

    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)

    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)

    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)

    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)

    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)

    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.35 logs.

该代码看起来像这样,它是tomcat7的示例代码,所以我想这是正确的。


<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

<html>

<head>

  <title>JSP 2.0 Examples - Hello World SimpleTag Handler</title>

</head>

<body>

<h1>JSP 2.0 Examples - Hello World SimpleTag Handler</h1>

<hr>

<p>This tag handler simply echos "Hello, World!"  It's an example of

a very basic SimpleTag handler with no body.</p>

<br>

<b><u>Result:</u></b>

<mytag:helloWorld/>

</body>

</html>


查看完整描述

3 回答

?
ITMISS

您必须使用支持JDK 8的最新版本的tomcat。

我可以确认apache-tomcat-7.0.35不支持JDK8,也可以确认apache-tomcat-7.0.50不支持JDK8。


查看完整回答
反对 回复 2019-11-15
?
慕姐4208626

JDK8的类格式已更改,这就是Tomcat无法编译JSP的原因。尝试获取更高版本的Tomcat。


我最近有同样的问题。这是Tomcat中的错误,或者说,JDK 8的类文件格式与JDK8之前的版本略有不同。这会导致不一致,并且Tomcat无法在JDK8中编译JSP。


查看完整回答
反对 回复 2019-11-15
?
慕的地10843

因为我们在Ubuntu 12.04 LTS上运行,并且最新的官方受支持的tomcat7软件包是7.0.26,所以我们不容易更新整个tomcat。


我打算使用jdk8进行测试,我可以通过将一些jar更改为最新的7.0。*版本来解决此问题。


我将jasper.jar,jasper-el和tomcat-util切换到了7.0.53版本,并添加了ecj-4.3.1.jar。这使应用程序重新联机。


但是...我也用这个改变了打包的内容,所以也许最好下载整个tomcat并使用它作为混乱的软件包自行安装。因此,请仅将此视为非常肮脏的quickhack或解决方法。


查看完整回答
反对 回复 2019-11-15

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信