Mit Hilfe von JSTL Ursachen deferredExpression Fehler auf ändern
Habe ich vor kurzem entfernt alle Skriptlets auf mein Projekt hingewiesen wird, die durch dieses post. Aber jetzt, wenn ich versuchen und machen eine änderung an einer meiner Ansichten, ich bekomme eine deferredExpression Fehler. Um loszuwerden, die Fehler, ich habe einfach zu beenden, dann starten Sie das Projekt neu.
Was ist hier Los? Ist eclipse nicht in der Lage zu kompilieren, jstl on-the-fly? Gibt es etwas, was ich ändern kann, damit ich nicht umschichten jedes mal, wenn ich eine änderung vornehmen?
Stack-Trace
java.lang.NoSuchFieldError: deferredExpression
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.release(ForEachSupport.java:212)
at org.apache.jasper.runtime.TagHandlerPool.release(TagHandlerPool.java:166)
at org.apache.jsp.l.profile_jsp._jspDestroy(profile_jsp.java:114)
at org.apache.jasper.runtime.HttpJspBase.destroy(HttpJspBase.java:88)
at org.apache.jasper.servlet.JspServletWrapper.destroy(JspServletWrapper.java:428)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:139)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)
at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
at java.security.AccessController.doPrivileged(Native Method)
at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.tools.appstats.AppstatsFilter.doFilter(AppstatsFilter.java:141)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.appspot.MySite.Controller.FacebookLogin.doFilter(FacebookLogin.java:140)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
- Was ist die vollständige Ausnahme? Dies scheint zu sein, allein die Nachricht Teil einer
java.lang.NoSuchFieldError
Ausnahme. Wenn ja, bitte Editiere deine Frage, um den vollständigen exception und stacktrace. - Hinzugefügt stack-trace
- Was ist die Quelle der Fehler. Können Sie den code, der diesen Fehler verursacht?
- abstract classpath-bezogene Fehler werden kaum verursacht durch code. Posting-code wird nicht helfen, lösen diese Art von Fehler. Egal, nach der stacktrace OP ist mit
<c:forEach>
improfile.jsp
- Datei. - Ich sollte mehr Zeit zum Lesen der stack-trace. Ich dachte, es wurde verursacht, indem Sie ihm etwas seltsam in seinem jsp. Vielen Dank für die Aufklärung mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem classpath ist verschmutzt mit verschiedenen JSTL Implementierung Versionen. Diese Besondere Ausnahme bedeutet, dass Sie haben beide die
jstl-1.2.jar
Datei von JSTL 1.2 und diestandard.jar
Datei von JSTL 1.1 oder 1.0 in den classpath. Dieses Feld wird eingeführt, JSTL 1.2 und dieForEachSupport
Klasse ist in den beiden JAR-Dateien. Anscheinend ist irgendwann die einestandard.jar
ist geladen und verwendet werden, während immer noch mit der JSTL 1.2-API JVM-Speicher.Die Lösung ist entfernen die
standard.jar
. Sie brauchen es nicht für JSTL 1.2 überhaupt.Siehe auch:
Update: gemäß der Kommentare, die Sie tatsächlich benötigen, um entfernen die
jstl-1.2.jar
als gut, da die Servlet 2.5 kompatible version von GAE/Jetty anscheinend schon Schiffe mit JSTL 1.1 aus der box. Dies war in Konflikt mit JSTL 1.2. in Ihre webapp.j2ee.jar
oderjavaee.jar
die Sie entführt aus anderen container wie Glassfish, um zu umgehen, Kompilierungs-Fehler in Ihrem Projekt kompilieren es gegen GAE/Steg eigenen libs?jstl-1.2.jar
statt und basieren auf der JSTL 1.1 libs von GAE/Steg selbst. Oder vielleicht ein downgrade auf JSTL 1.1-kompatiblen libs. Was servlet-version ist Ihreweb.xml
erklärt durch die Art und Weise? Und was servlet-version unterstützt GAE/Jetty unterstützt derzeit als max?Haben Sie sehr wahrscheinlich zwei Versionen der JSTL (javax.servlet:jstl:). Entfernen Sie die ältere version und stellen Sie sicher, aktualisieren Sie die version, die überall, wo Sie waren mit den älteren, und Sie sollten gut sein.