无法为JSP编译类:无法解析类型java.util.Map$条目。它是从必需的.class文件间接引用的
我无法让tomcat7编译JSP。它一直运行示例servlet,服务已经启动并运行。我正在运行OracleJava8 谁能给我指出正确的方向吗 以下是stacktrace:无法为JSP编译类:无法解析类型java.util.Map$条目。它是从必需的.class文件间接引用的,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我无法让tomcat7编译JSP。它一直运行示例servlet,服务已经启动并运行。我正在运行OracleJava8 谁能给我指出正确的方向吗 以下是stacktrace: type Exception report message Unable to compile class for JSP: description The server encountered an internal error that prevented it from fulfilling this reques
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>
JSP 2.0示例-Hello World SimpleTag处理程序
JSP 2.0示例-Hello World SimpleTag处理程序
这个标记处理程序只是回应“你好,世界!”这是一个
一个非常基本的没有主体的SimpleTag处理程序
结果:
添加此导入
这对我很有效,但我还需要补充。
上面的答案似乎是正确的,如果您有更新的tomcat,您可能不需要添加这些行,但由于我无法更改我的整个系统,这是有效的。感谢您来自: 工作流操作可能无法访问
2007-12-06 10:55:05,327 http-8080-Processor20 ERROR [500ErrorPage]
Exception caught in500 page Unable to compile class for JSP
org.apache.jasper.JasperException: Unable to compile class for JSP
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:572)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
_
Cause:
Tomcat容器缓存由
web应用程序使用的JSP解析器。有时候这些会让你失望
已损坏或找不到。这可能发生在修补程序或升级之后
它包含对JSP的修改
Resolution
1.如果使用独立JIRA,则删除/work文件夹的内容;如果使用EAR/WAR安装,则删除/work文件夹的内容
.
2.验证运行JIRA应用程序进程的用户对/work目录具有读/写权限。
3.重新启动JIRA应用程序容器以重建文件
JDK8的类格式已经改变,这就是Tomcat无法编译JSP的原因。尝试获取Tomcat的更新版本 我最近也有同样的问题。这是Tomcat中的一个bug,或者更确切地说,JDK8的类文件格式与之前的JDK8版本略有不同。这会导致不一致,Tomcat无法在JDK8中编译JSP 见以下参考资料:
我可以确认apache-tomcat-7.0.35不支持JDK8,我也可以确认apache-tomcat-7.0.50确实支持JDK8。因为我们运行的是Ubuntu12.04 LTS,最新官方支持的tomcat7包是7.0.26,所以我们不容易更新整个tomcat 为了测试jdk8的性能,我根据最新的7.0.*版本更改了一些JAR,从而解决了这个问题 我将jasper.jar、jasper el和tomcat util切换到7.0.53版本,并添加了ecj-4.3.1.jar。这将使应用程序重新联机
但是。。。我也用这个改变了打包的内容,所以也许下载整个tomcat并用它自己安装来弄乱包会更好。因此,请仅将此视为一种非常肮脏的快速破解或解决方法。在tomcat 7.0.19上将我的应用程序从java 6升级到java 8时,遇到了完全相同的问题。 将tomcat升级到7.0.59后,此问题得到解决。尝试将
添加到jsp文件中有许多正确/相同的答案,但供将来参考:
Tomcat7也是如此。请注意,仅更新已使用框架的版本(如其他类似问题中所建议的)是不够的
您还必须更新Tomcat插件的版本。
对我来说,使用Java 7最有效的方法是升级到tomcat7 maven插件(=tomcat7.0.47)的2.2版。我最近遇到了同样的问题。我使用的是IntelliJx64、Tomcat7.0.32和jdk.8.0.102。当时没有问题。我可以直接访问我的部署本地主机:[port],而无需添加[mywebapp]或/ROOT 当我尝试迁移到EclipseNeon时,遇到了与我尝试将路径设置为空字符串时讨论的相同的错误。当我将执行环境强制为Java7并将模块设置为空时,它并没有解决toe问题。然而,当我将tomcat安装更改为7.072并手动将上下文路径配置更改为path=”“时,问题在eclipse中得到了解决。(您可以通过双击服务器并切换到模块选项卡来操纵路径。) 我想知道的是,为什么IntelliJ没有给出与tomcat安装版本相关的相同bug的任何问题
这似乎与使用中的IDE也有关系。如果您使用的是maven,那么您可以将tomcat7 maven插件添加到pom.xml中,它将正常运行。该插件将在支持JDK1.8的TomcatServlet容器版本7.0.47上运行该项目
<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>
org.apache.tomcat.maven
tomcat7 maven插件
2.2
./src/main/webapp/META-INF/context.xml
8080
com.oracle
ojdbc6
11.2.0.4.0
希望这是有用的!
谢谢我以前遇到过这个问题,正如其他人所说:只需升级jetty插件 如果您使用的是
maven
转到pom.xml中的jetty
plugin并将其更新为
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.0.v20150612</version>
<configuration>
<scanIntervalSeconds>3</scanIntervalSeconds>
<httpConnector>
<port>${jetty.port}</port>
<idleTimeout>60000</idleTimeout>
</httpConnector>
<stopKey>foo</stopKey>
<stopPort>${jetty.stop.port}</stopPort>
</configuration>
</plugin>
org.eclipse.jetty
jetty maven插件
9.3.0.v20150612
3.
${jetty.port}
60000
福
${jetty.stop.port}
希望这对您有所帮助您的jsp页面出现错误,tomcat无法编译,您可以发布jsp文件吗?mabbas是正确的,您需要在jsp文件中添加这一行<代码>JDK8的类格式已更改,这就是Tomcat无法编译JSP的原因。尝试获取Tomcat的更新版本。请看下面我的答案。这适用于所有带有嵌入式编译器的应用程序
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.0.v20150612</version>
<configuration>
<scanIntervalSeconds>3</scanIntervalSeconds>
<httpConnector>
<port>${jetty.port}</port>
<idleTimeout>60000</idleTimeout>
</httpConnector>
<stopKey>foo</stopKey>
<stopPort>${jetty.stop.port}</stopPort>
</configuration>
</plugin>