首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法为JSP编译类:无法解析类型java.util.Map$Entry。它是从所需的.class文件间接引用的

无法为JSP编译类:无法解析类型java.util.Map$Entry。它是从所需的.class文件间接引用的
EN

Stack Overflow用户
提问于 2013-10-08 17:06:51
回答 8查看 108.7K关注 0票数 67

我不能让tomcat7编译jsps。它会一直运行示例servlet,直到服务启动并运行。我正在运行oracle java 8。

有谁能给我指个方向吗?

下面是堆栈跟踪:

代码语言:javascript
复制
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的示例代码,所以我猜它是正确的。

代码语言:javascript
复制
<%@ 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>
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-01-24 09:10:41

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

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

票数 96
EN

Stack Overflow用户

发布于 2017-03-17 00:04:02

如果你使用的是maven,那么你可以将tomcat7-maven-plugin添加到你的pom.xml中,它就会运行的很好。此插件将在支持JDK 1.8的Tomcat servlet容器版本7.0.47上运行该项目。

代码语言:javascript
复制
    <plugins>
    <plugin>
     <groupId>org.apache.tomcat.maven</groupId>
     <artifactId>tomcat7-maven-plugin</artifactId>
     <version>2.2</version>
     <configuration>
<!-- Include context file for Datasource configuration -->
     <contextFile>./src/main/webapp/META-INF/context.xml</contextFile>
    <port>8080</port>
     </configuration>
     <dependencies>
<!-- Include jdbc driver dependency if using datasource (in my case oracle) -->
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.4.0</version>
    </dependency>
  </dependencies>
    </plugin>
    </plugins>

希望这是有用的!谢谢

票数 3
EN

Stack Overflow用户

发布于 2014-03-31 19:10:31

因为我们是在Ubuntu12.04LTS上运行的,最新的官方支持的tomcat7包是7.0.26,所以我们不能轻易地更新整个tomcat。

为了测试jdk8,我能够通过更改一些jars来解决这个问题,而不是最新的7.0.*版本。

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

但是..。另外,我用这个改变了打包的内容,所以也许下载整个tomcat并将其作为乱七八糟的包使用会更好。因此,请仅将其视为一个非常肮脏的快招或变通方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19243458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档