【问题标题】:Unable to compile class for JSP error when I'm running my code in eclipse gwt project当我在 eclipse gwt 项目中运行我的代码时,无法为 JSP 错误编译类
【发布时间】:2016-04-11 14:31:55
【问题描述】:

您好,当我尝试访问我的 gwt 项目中的 jsp 页面时出现以下错误。其他不是 jsp 页面的页面都可以正常访问。

奇怪的是,当 GWT SDK 在构建路径顺序中移到底部时,我能够看到 JSP 文件,这会导致另一个错误,即未安装 GWT SDK

谁能帮帮我?

org.apache.jasper.JasperException: Unable to compile class for JSP
Generated servlet error:
2016/01/07 14:30:51:128 IST [ERROR] Compiler - Javac exception  <Compile failed; see the compiler error output for details.>Compile failed; see the compiler error output for details.
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:933)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:757)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:379)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
at com.rapapp.gwt.server.common.util.CompressionFilter.doFilter(CompressionFilter.java:113)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at com.rapapp.gwt.server.common.util.CacheFilter.doFilter(CacheFilter.java:69)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:68)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Unknown Source)



Generated servlet error:
2016/01/07 14:30:51:129 IST [ERROR] Compiler - Env: Compile:  javaFileName=/C:/Users/USER/AppData/Local/Temp/jetty-127.0.0.1-8888-war-_-any-//org/apache/jsp\login_jsp.java

【问题讨论】:

  • 请发布您的 login.jsp
  • 请检查编译器日志 -> 分享一下吧?
  • 嗨@StefanBeike,我试过但无法在这里发布我的代码。但是我更改了仅包含 html 基本标签的文件。即仅 div 和 input 标签。我仍然遇到同样的错误。你能猜出可能是什么问题吗?
  • 奇怪的是,当 GWT SDK 在构建路径顺序中移到底部时,我能够看到 JSP 文件,这会导致另一个错误,即未安装 GWT SDK
  • 创建一个基本的 jsp 文件,该文件会引发相同的错误并发布该错误...没有任何代码就没有太多帮助

标签: java eclipse jsp gwt gxt


【解决方案1】:

由于您没有提供login.jsp 文件,所以我想分享一些解决此问题的建议。

  1. 使用最新的 tomcat - http://www.howopensource.com/2015/07/unable-to-compile-class-for-jsp-the-type-java-util-mapentry-cannot-be-resolved/

  2. jsp-api 由您的Servlet container 提供。至少使用2.1 版本。更改pom.xml中的依赖项

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    <scope>provided</scope>
</dependency>
  1. class name 将写入package name 的地方使用您的bean。例如,
<%@ page import="com.Test.Person" %> 
<html> 
<head></head> 
<body> 
<jsp:useBean id="person" class="com.Test.Person" scope="request" /> 
<jsp:setProperty name="person" property="name" value="Tripti" /> 
This JSP Page is created by:<jsp:getProperty name="person" property="name" /> 

</body> 
</html>
  1. Tomcat 容器缓存.java.class 生成的文件 Web 应用程序使用它们的 JSP 解析器。有时这些得到 损坏或找不到。 这可能发生在补丁或 包含对 JSP 的修改的升级

分辨率

  • 如果使用删除&lt;JIRA_INSTALL&gt;/work 文件夹的内容 standalone JIRA&lt;CATALINA_BASE&gt;/work 如果使用 EAR/WAR 安装。
  • 验证运行 JIRA 应用程序进程的用户是否具有读/写权限 对&lt;JIRA_INSTALL|CATALINA_BASE&gt;/work 目录的权限。
  • 重新启动 JIRA 应用程序容器以重建文件。

还有其他一些方法--

  1. 在现代 Java 中不鼓励使用不在包中的类,因为 在许多情况下它们不起作用的地方。把你的课 放入包中(使用 .java 顶部的包语句 文件)--全部。

  2. 这个问题是由 JspServlet 使用的默认值产生的,它使用 1.4 编译源/目标值。

你可以通过添加来配置这个servlet

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>compilerSourceVM</param-name>
        <param-value>1.5</param-value>
    </init-param>
    <init-param>
        <param-name>compilerTargetVM</param-name>
        <param-value>1.5</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
  1. 还有一个问题,因为您无法使用当前的 jasper-compiler-5.0.28 配置 JspServlet。您应该下载jasper-compiler-5.0.30make sure is in your classpath before gwt。还有其他最新的 jasper 编译器 jar,但我不知道与 jakarta-tomcat-5.0.28 的兼容性如何@

  2. https://code.google.com/archive/p/raisercostin/wikis/GwtEclipsePluginDebug.wiki

  3. 这可能是由 jar 冲突引起的。删除你的servlet/WEB-INF/目录下的servlet-api.jar%Tomcat home%/lib已经有了这个lib。

  4. 每次我看到这些错误的原因是 jasper 找不到 java编译器。尝试将tools.jar 放入您的common/lib 中,看看是否 然后服务工作..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多