[英]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
文件,因此我想分享一些建議來解決此問題。
使用最新的tomcat- http://www.howopensource.com/2015/07/unable-to-compile-class-for-jsp-the-type-java-util-mapentry-can-be-resolved/
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>
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>
.java
和.class
文件。 有時這些文件已損壞或找不到。 在包含對JSP的修改的補丁程序或升級之后,可能會發生這種情況 。 解析度
standalone JIRA
刪除<JIRA_INSTALL>/work
文件夾的內容;如果使用EAR/WAR
安裝,請刪除<CATALINA_BASE>/work
。 <JIRA_INSTALL|CATALINA_BASE>/work
目錄的讀/寫權限。 還有其他一些方法-
在現代Java中,不鼓勵不在包中的類在某些情況下不起作用。 將您的類放入包中(使用.java文件頂部的package語句)。
此問題是由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>
還有一個問題,因為您無法使用當前的jasper-compiler-5.0.28
配置jasper-compiler-5.0.28
。 您應該下載jasper-compiler-5.0.30
並make sure is in your classpath before gwt
。 還有其他最新的jasper編譯器jar,但是我對與jakarta-tomcat-5.0.28
兼容性jakarta-tomcat-5.0.28
https://code.google.com/archive/p/raisercostin/wikis/GwtEclipsePluginDebug.wiki
這可能是由jar沖突引起的。 刪除您的servlet/WEB-INF/
目錄中的servlet-api.jar
, %Tomcat home%/lib
已經有了這個庫。
每次我看到那些錯誤,原因是jasper找不到Java編譯器。 嘗試將tools.jar
放在common/lib
然后查看該服務是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.