簡體   English   中英

在eclipse gwt項目中運行代碼時,無法為JSP錯誤編譯類

[英]Unable to compile class for JSP error when I'm running my code in eclipse gwt project

嗨,當我嘗試訪問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文件,因此我想分享一些建議來解決此問題。

  1. 使用最新的tomcat- http://www.howopensource.com/2015/07/unable-to-compile-class-for-jsp-the-type-java-util-mapentry-can-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 namepackage 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容器緩存由Web應用程序使用的JSP解析器生成的.java.class文件。 有時這些文件已損壞或找不到。 在包含對JSP的修改的補丁程序或升級之后,可能會發生這種情況

解析度

  • 如果使用standalone JIRA刪除<JIRA_INSTALL>/work文件夾的內容;如果使用EAR/WAR安裝,請刪除<CATALINA_BASE>/work
  • 驗證運行JIRA應用程序進程的用戶是否具有對<JIRA_INSTALL|CATALINA_BASE>/work目錄的讀/寫權限。
  • 重新啟動JIRA應用程序容器以重建文件。

還有其他一些方法-

  1. 在現代Java中,不鼓勵不在包中的類在某些情況下不起作用。 將您的類放入包中(使用.java文件頂部的package語句)。

  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配置jasper-compiler-5.0.28 您應該下載jasper-compiler-5.0.30make sure is in your classpath before gwt 還有其他最新的jasper編譯器jar,但是我對與jakarta-tomcat-5.0.28兼容性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已經有了這個庫。

  4. 每次我看到那些錯誤,原因是jasper找不到Java編譯器。 嘗試將tools.jar放在common/lib然后查看該服務是否有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM