2011-01-08 5 views
0

Все работает отлично, но теперь я больше не могу запускать свое приложение. По какой-то причине javax. * Не был найден еще в Eclipse, импорт отлично ...java.lang.NoClassDefFoundError

exception 

javax.servlet.ServletException: Error allocating a servlet instance 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 


root cause 

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet 
java.lang.ClassLoader.defineClass1(Native Method) 
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
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) 
java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 


root cause 

java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet 
java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
java.security.AccessController.doPrivileged(Native Method) 
java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
java.lang.ClassLoader.defineClass1(Native Method) 
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
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) 
java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 
+0

Вы запускаетесь из Eclipse? Если это так, проверьте вкладку «Путь к конфигурации». –

ответ

0

Добавьте servlet-api.jar к классам проекта. Контейнеры для сервлетов имеют эту банку в комплекте, поэтому нет необходимости добавлять ее в lib.

1

У вас обычно есть сервлет-api.jar в Apache Tomcat «Серверная среда выполнения».

Когда вы определяете время выполнения сервера в Elcipse, эта библиотека определяется и будет содержать ссылку на servet-api.jar в Tomcat.

При создании динамического веб-проекта он должен иметь эту библиотеку, определенную в Java Build Path. Проверьте, имеет ли ваш проект этот путь сборки.

-2

просто скопируйте баннер сервлета-api и вставьте в свой каталог webapps lib. а затем выберите ваш проект в eclipse -> щелчок правой кнопкой мыши -> свойства -> путь сборки Java -> выберите вкладку «порядок и экспорт» -> выберите «Все» -> «Готово».

Теперь просто запустите приложение, используя затмение. Надеюсь, все будет хорошо. все еще проблема есть, тогда скажите, я скажу вам другое решение

+2

Это работает, но это совершенно неверный путь. Ваш webapp будет ломаться всякий раз, когда вы развертываете его на servletcontainers другого make/version, чем тот, в котором возникли файлы lib, которые вы сбросили в папке webapps lib. Вам лучше установить * Target Runtime * в свойствах проекта, тогда Eclipse позаботится об этом автоматически. И он делает это НЕ, копируя библиотеки, специфичные для сервлетов, в webapps lib. – BalusC

+0

ya, что вы сказали, это правильно. но предположим, что если вы пытаетесь выполнить свой проект на другом сервере в другом mechine. в то время вы также должны переместить свои банки в эту мехину. если вы поместите свою библиотеку в каталог проекта. тогда, когда вы меняете другую мехину, ваши банки также переходят в другую мехину. то вы можете настроить с помощью eclipse, или вы можете установить путь к классу, тогда он будет работать легко. если вы установите целевую рабочую среду, это будет работать на то, что mechine - это хорошо, но если вы перейдете на другую mechine, это может стать проблемой – SRIHARI

+0

проблема означает, что вам нужно переместить полный проект eclipse. предположим, что если ваша целевая мехина не может содержать ecipse. я думал, если мое предположение неверно, то почему дизайн структуры веб-проекта для папки lib в WEB-INF ??? (чтобы сделать решение, есть много способов, мы можем использовать свой собственный путь, но никогда не думаем, что что-то пошло, а что-то не так, все имеет свои хорошие и плохие проблемы) – SRIHARI

Смежные вопросы