java.lang.NoClassDefFoundError: javax / el / ELResolver при запуске примера JSF SimpleHelloByEnteringName - PullRequest
2 голосов
/ 15 июня 2011

Я новичок в JSF. Я использую Tomcat 7.0.14 и пытаюсь запустить пример SimpleHelloByEnteringName, но получаю следующие ошибки при запуске и во время выполнения

Сообщение консоли запуска:

INFO: Deploying web application directory SimpleHelloByEnteringName
Jun 15, 2011 7:35:42 AM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Mojarra 2.0.3 (FCS b03) for context '/SimpleHelloByEnteringName'
Jun 15, 2011 7:35:43 AM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed.

**Jun 15, 2011 7:35:44 AM com.sun.faces.config.processor.NavigationConfigProcessor addNavigationCasesForRule
WARNING: JSF1058: The resource referred to by to-view-id, 'result.jsp', for navigation from '/pages/inputname.jsp', does not start with '/'.  This will be added for you, but it should be corrected.**

Jun 15, 2011 7:35:44 AM com.sun.faces.config.ConfigureListener$WebConfigResourceMonitor$Monitor <init>
INFO: Monitoring jndi:/localhost/SimpleHelloByEnteringName/WEB-INF/faces-config.xml for modifications
Jun 15, 2011 7:35:44 AM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-apr-8081"]
Jun 15, 2011 7:35:44 AM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-apr-8009"]
Jun 15, 2011 7:35:44 AM org.apache.catalina.startup.Catalina start

и ошибка времени выполнения при попытке запуска http://localhost:8081/SimpleHelloByEnteringName/

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:342)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

java.lang.NoClassDefFoundError: javax/el/ELResolver
    java.lang.ClassLoader.defineClass1(Native Method)
    java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    java.security.AccessController.doPrivileged(Native Method)
    java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
    java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    java.lang.ClassLoader.loadClass(ClassLoader.java:295)
    sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    java.lang.ClassLoader.loadClass(ClassLoader.java:295)
    java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    org.apache.jasper.runtime.JspFactoryImpl.getJspApplicationContext(JspFactoryImpl.java:220)
    org.apache.jsp.index_jsp._jspInit(index_jsp.java:23)
    org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

java.lang.ClassNotFoundException: javax.el.ELResolver
    java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    java.security.AccessController.doPrivileged(Native Method)
    java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
    java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    java.lang.ClassLoader.defineClass1(Native Method)
    java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    java.security.AccessController.doPrivileged(Native Method)
    java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
    java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    java.lang.ClassLoader.loadClass(ClassLoader.java:295)
    sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    java.lang.ClassLoader.loadClass(ClassLoader.java:295)
    java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    org.apache.jasper.runtime.JspFactoryImpl.getJspApplicationContext(JspFactoryImpl.java:220)
    org.apache.jsp.index_jsp._jspInit(index_jsp.java:23)
    org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.14 logs.

Как возникает эта проблема и как я могу ее решить?

Ответы [ 2 ]

7 голосов
/ 15 июня 2011

ПРЕДУПРЕЖДЕНИЕ: JSF1058: Ресурс, на который ссылается to-view-id, «result.jsp», для навигации из «/pages/inputname.jsp», не начинается с «/». Это будет добавлено для вас, но это должно быть исправлено.

Предупреждение не имеет отношения к проблеме. JSF уже исправил это для вас, но говорит вам, что вы должны исправить это самостоятельно в faces-config.xml.


java.lang.ClassNotFoundException: javax.el.ELResolver

Это, однако, довольно серьезно. Это может иметь несколько причин:

  • На самом деле вы не используете Tomcat 7.0 вообще, а Tomcat 5.5, в котором отсутствует этот класс. Дважды проверьте его.

  • Вы отбросили кучу библиотек, специфичных для сервлет-контейнера, таких как el-api.jar, jsp-api.jar и т. Д. Другой марки / версии сервлет-контейнера (возможно, Tomcat 5.5?) В WEB-INF/lib веб-приложения или в JRE/lib в Java папка. Возможно, чтобы преодолеть проблемы компиляции. Перемещение / копирование JAR-файлов, связанных с сервлет-контейнером, является неправильным решением. Отмените его и удалите все.

  • Ваш web.xml не объявлен соответствующим как минимум спецификации Servlet 2.5. Поскольку вы упоминаете, что используете Tomcat 7.0, который является контейнером Servlet 3.0, вы должны объявить Servlet 3.0, соответствующий web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <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"
        id="WebApp_ID" version="3.0">
    
        <!-- Your config here -->
    </web-app>
    

Обновление : о, подождите ... Я заглянул в "SimpleHelloByEnteringName" и обнаружил, что на самом деле это пример Roseindia.net ( shudder ), представленный здесь: Загрузка и установка JSF-примера "SimpleHelloByEnteringName" . Я хотел бы подчеркнуть, что этот сайт является худшим обучающим ресурсом Java EE на веб-сайтах. Я настоятельно рекомендую перейти на другие ресурсы.

2 голосов
/ 16 мая 2015

У меня была похожая проблема при выполнении веб-проекта Dynamic в Eclipse.

java.lang.NoClassDefFoundError: javax / el / ELResolver

Здесь проблема в том, что классы, которые вы используете в своем проекте, не определены в classpath .В моем случае мне пришлось добавить

  1. el-api.jar
  2. jsp-api.jar
  3. servlet-api.jar

в classpath моего Tomcat в разделе Bootstrap.

enter image description here

Итак, в вашем случае проверьте, присутствуют ли эти 3 банки в каталоге C: \ Tomcat \ lib.Добавьте его в classpath, если его нет.

Надеюсь, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...