Soru javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax / servlet / jsp / jstl / çekirdek / ConditionalTagSupport


Sayfaları süslemek için sitemesh kullanıyorum. Bunun için bir JSP sayfası kullanıyorum. Sayfayı kullanana kadar iyi çalıştı <c:if> koşullu etiket. WEB-INF / lib klasöründe jstl-impl-1.2.jar & sitemesh-3.0-alpha-1.jar dosyaları var. Jsp sayfasında aşağıdaki etiket kitaplığı beyanları var:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

Java 6 ile tomcat 7.0 kullanıyorum. Eclipse'deki yeni dinamik web projesini oluşturduğumda, dinamik web modülü versiyonunu 2.4 olarak ayarladım. Sayfa var <c:set/> etiketleri, iyi çalışıyorlar, ancak koşullu etiketini kullandığımda aşağıdaki hatayı alıyorum:

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:342)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.sitemesh.webapp.WebAppContext.dispatch(WebAppContext.java:158)
org.sitemesh.webapp.WebAppContext.decorate(WebAppContext.java:133)
org.sitemesh.BaseSiteMeshContext.decorate(BaseSiteMeshContext.java:39)
org.sitemesh.webapp.SiteMeshFilter.postProcess(SiteMeshFilter.java:74)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.bufferAndPostProcess(ContentBufferingFilter.java:175)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.doFilter(ContentBufferingFilter.java:126)
org.sitemesh.config.ConfigurableSiteMeshFilter.doFilter(ConfigurableSiteMeshFilter.java:157)

root cause

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1223)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
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:644)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.sitemesh.webapp.WebAppContext.dispatch(WebAppContext.java:158)
org.sitemesh.webapp.WebAppContext.decorate(WebAppContext.java:133)
org.sitemesh.BaseSiteMeshContext.decorate(BaseSiteMeshContext.java:39)
org.sitemesh.webapp.SiteMeshFilter.postProcess(SiteMeshFilter.java:74)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.bufferAndPostProcess(ContentBufferingFilter.java:175)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.doFilter(ContentBufferingFilter.java:126)
org.sitemesh.config.ConfigurableSiteMeshFilter.doFilter(ConfigurableSiteMeshFilter.java:157)

root cause

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.ConditionalTagSupport
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1223)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
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:644)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.sitemesh.webapp.WebAppContext.dispatch(WebAppContext.java:158)
org.sitemesh.webapp.WebAppContext.decorate(WebAppContext.java:133)
org.sitemesh.BaseSiteMeshContext.decorate(BaseSiteMeshContext.java:39)
org.sitemesh.webapp.SiteMeshFilter.postProcess(SiteMeshFilter.java:74)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.bufferAndPostProcess(ContentBufferingFilter.java:175)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.doFilter(ContentBufferingFilter.java:126)
org.sitemesh.config.ConfigurableSiteMeshFilter.doFilter(ConfigurableSiteMeshFilter.java:157)

25
2017-11-08 02:26


Menşei


Hangi jstl-impl kavanozu? Apache taglibs kullanıyorsanız, hem jstl hem de standart jar'a ihtiyacınız olacaktır. - Dave Newton
@DaveNewton Emin değilim, Glassfish sunucu sitesinden indirdim. - Ghost-Man
API kavanozunu da al; bunu yapmalı. Eğer yaparsa, bunu bir cevaba dönüştüreceğim. Yapmazsa, ben sadece neyin yanlış olduğunu merak edeceğim. - Dave Newton
@DaveNewton Şimdi PC'mde değilim. Bunu denemeden birkaç saat sürecek, ama eminim ki işe yarayacak gibi görünsün. Teşekkürler !! - Ghost-Man
@DaveNewton evet haklıydınız, API kavanozunu kaçırdım, işe yaradı. Tekrar teşekkürler. Bir cevaba dönüştürebilirsiniz. +1 - Ghost-Man


Cevaplar:


Bu istisna, çalışma zamanı sınıf yolunda JSTL API'sinin eksik olduğunu göstermektedir. Sadece JSTL impl'iniz var gibi görünüyor. Onu kaldırmayı ve kullanmamayı önerdim JSTL-1.2.jar Bunun yerine hem API hem de impl paketlenmiştir.

Ayrıca, güncellemenizi de öneririz. web.xml kök bildirimi Servlet 3.0 özelliklerine uymak için. JSTL 1.2, minimum bir Servlet 2.5 gerektirir, bu nedenle bir Servlet 2.4 hedefli projede çok iyi çalışmayacaktır. Tomcat 7 bir Servlet 3.0 kabı olduğu için ve Servlet 3.0 2.5'in üzerinde bir sürü yeni harika özellik sunuyor.

<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

Dinamik web projesi faset sürümünüzü projenizin özelliklerine göre düzeltmeyi unutmayın.

Ayrıca bakınız:


56
2017-11-08 03:21



Hrmph. + sekiz. - Dave Newton
@BalusC Biliyorsunuz, bu soruyu gönderdiğimde, cevap vermeyi umduğumuzu umuyordum. Çünkü biliyordum, eğer cevap vereceksen o zaman sadece uygun bir çözüm değil, aynı zamanda eksik ya da yanlış yaptığım ekstra noktalar da olacaktır. Çok teşekkür ederim. Buradaki problemim var ve şüphesiz çözümünüz işe yaradı. - Ghost-Man
Rica ederim. - BalusC


Belki de javax.servlet.jsp.jstl-api-1.2.x.jar dosyasını sınıf yolunuza eklemelisiniz. Temel API olmadan yalnızca belirli bir uygulamayı bildiriyorsunuz. Aynı problemi yaşadım ve bu şekilde çözdüm. Saygılarımızla, Giacomo


-1
2017-08-04 17:15





JSTL lib eksik olabilir jstl ve servlet kavanozları kontrol edin.


-1
2018-01-23 09:01



Bu çözüm ile problemi çözdüm. - Suraj Kotwal Pune


Netbeans IDE'den

Bir projeye sağ tıklayın, ardından kitaplara basıp kütüphane ekleyin

Onu kovacaksın.


-2
2018-02-03 19:10