При попытке войти в систему генерируется ошибка java.lang.NoClassDefFoundError и ошибка java.lang.ClassNotFoundException - PullRequest
1 голос
/ 19 ноября 2011

Вот мой сценарий. У меня есть рабочая форма входа, которая работает правильно.Я попытался установить ESAPI для защиты формы.
При этом теперь при попытке входа в систему в браузере генерируется это сообщение:

java.lang.NoClassDefFoundError: org/owasp/esapi/ESAPI
at com.tunestore.action.LoginAction.execute(LoginAction.java:43)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.tunestore.servlet.PersistenceFilter.doFilter(PersistenceFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.owasp.esapi.ESAPI
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1671)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
    ... 31 more



ROOT CAUSE
java.lang.ClassNotFoundException: org.owasp.esapi.ESAPI
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1671)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
    at com.tunestore.action.LoginAction.execute(LoginAction.java:43)
    at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
    at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at 

    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.tunestore.servlet.PersistenceFilter.doFilter(PersistenceFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

Я используюEclipse Java EE IDE Indigo Service Release 1.

Я вошел в свойства проекта и добавил в библиотеки файл esapi-2.0.1.jar.

Это все, что нужно, но я получаю сообщение выше.В попытке устранить неполадки, я сделал следующее:

Кроме того, я развернул и вручную указал исходное вложение и расположение собственной библиотеки на каталоги src и lib, которые поставляются с zap-файлом esapi..

Я настроил проект для использования JDK, поскольку он был создан с JRE в качестве «Установленного JRE».
by:

  • Щелкните правой кнопкой мыши имя проекта.
  • Выберите «Свойства», «Путь сборки Java»
  • Перейдите на вкладку «Библиотеки».
  • Нажмите «Добавить библиотеки», выберите «Системная библиотека JRE», Далее
  • Выберите нижний элемент: JRE рабочей области по умолчанию (jdk1.xx и т. Д ....)
  • (обратите внимание, что теперь это JDK, а не JRE!)
  • Нажмите "Готово "
  • Теперь удалите библиотеку JRE, чтобы у вас была только библиотека JDK.
  • ex: Системная библиотека JRE [JavaSE-1.6]
  • Нажмите" ОК "

Далее я настроил Eclipse для использования JDK, а не JRE, выполнив следующие действия:

  • Окно-> Настройки-> Java-> Установленные JRE
  • Нажмите «Добавить», «Стандартная виртуальная машина», «Далее»
  • . Для «JRE Home» нажмите «Каталог»
  • Пример: C: \ java \ jdk1.6.0_24
  • Нажмите "Готово"
  • Затем проверьте JDK против JRE, которая является
  • Нажмите «Ok»

Чтобы убедиться, что файлы .properties были распознаны, я также добавил

-Dorg.owasp.esapi.resources="c:\.esapi"

в Аргументы виртуальной машины по умолчанию.

Я также добавил тот же файл esapi-2.0.1.jar в системные библиотеки JRE, перечисленные здесь.

И, наконец, я вошел в свой проект в Project Explorer и углубился в Библиотеки> Система JRE.Библиотека> esapi-2.0.1.jar> org.owasp.esapi> ESAPI.class> ESAPI, и он заявил, что теперь у него есть источник, поэтому я перешел к той же папке src, где был извлечен файл zap esapi.1070 * На всех этих этапах ошибка не изменилась.

1 Ответ

5 голосов
/ 19 ноября 2011

Путь к классу веб-приложения состоит из / WEB-INF / classes, всех jar-файлов в / WEB-INF / lib и пути к классу самого веб-сервера (в данном случае tomcat).Библиотеки, которые вы добавляете в classpath проекта eclipse, не развертываются вместе с приложением.Так что если вы не поместите их в classpath tomcat, они не будут в classpath при запуске веб-приложения.

В этом случае вам непременно следует удалить библиотеку из пути сборки eclipse, и простобросьте банку в WEB-INF / lib.В Eclipse он будет автоматически доступен для размещения, и он будет автоматически развернут с веб-приложением и будет находиться в своем пути к классам во время выполнения.

...