2015-01-22 5 views
0

У меня возникают проблемы при использовании зависимости от моего веб-приложения Tomcat. Я пробовал:ClassNotFoundException в Tomcat 7

  1. Добавление .jar в WEB-INF/Lib
  2. Добавление пути в $ CATALINA_HOME/CONF/catalina.properties
  3. Добавление .jar в моей конфигурации Tomcat в в IntelliJ
  4. Добавление .jar в $ TOMCAT_HOME/Lib

Однако я получаю ту же ошибку, когда зависимость называется:

java.lang.ClassNotFoundException: org.mongodb.morphia.Morphia 
    java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    java.security.AccessController.doPrivileged(Native Method) 
    java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    com.turn.quest.mongo.MongoManager.<init>(MongoManager.java:31) 
    com.turn.quest.mongo.MongoManager.<clinit>(MongoManager.java:22) 
    com.turn.quest.mongo.data.Document.<init>(Document.java:30) 
    com.turn.quest.mongo.data.Template.<init>(Template.java:21) 
    com.turn.quest.mongo.data.GeoTargetingTemplate.<init>(GeoTargetingTemplate.java:15) 
    com.turn.jaxrs.template.TemplateController.get(TemplateController.java:30) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:606) 
    com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:168) 
    com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:71) 
    com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:280) 
    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
    com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
    com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1341) 
    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1273) 
    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1223) 
    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1213) 
    com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414) 
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) 
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) 
    org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 
    org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381) 
    com.turn.quest.filters.ClickjackFilter.doFilter(ClickjackFilter.java:27) 
    com.turn.quest.filters.PbAuthenticationFilter.doFilter(PbAuthenticationFilter.java:286) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:606) 
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
    org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) 
    org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    com.sun.proxy.$Proxy315.doFilter(Unknown Source) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:94) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) 

Если я называю зависимость от внешнего Tomcat, все работает нормально.

ответ

1

Вам просто нужно добавить это как зависимость от вашего проекта IDEA. Если вы используете maven или gradle, добавьте зависимость к вашему файлу сборки. Например, для мавена, необходимо добавить следующую строку в ваш pom.xml файл:

<dependency> 
    <groupId>org.mongodb.morphia</groupId> 
    <artifactId>morphia</artifactId> 
    <version>0.109</version> 
</dependency> 

Если вы настроили свой проект через IDEA:

  1. Перейти к File > Project Structure
  2. Нажмите на модули ссылку в разделе Настройки проекта раздел слева.
  3. Выберите модуль, в котором используется зависимость.
  4. Нажать на Зависимости tab.
  5. Нажмите кнопку добавления enter image description here справа и выберите «Library»
  6. В кнопке «Выбрать Libraries» окно, нажмите «Новая библиотека ...» и выберите Java из выпадающего списка
  7. в файле Browswer, выберите файлы (файлы) JAR для библиотеки или каталог, содержащий файлы JAR (он добавит все JAR-файлы в каталог) или каталог, содержащий классы.
  8. Нажмите «ОК» в диалоговом окне выбора файла.
  9. В диалоговом окне «Настройка библиотеки» дайте библиотеке соответствующее имя. При желании вы можете добавить источники и javadocs в определение. (Вы также можете сделать это в форме File Chooser на предыдущих шагах, выбрав несколько JAR. IDEA автоматически определяет, являются ли они классами, источниками или Javadoc.)
  10. Нажмите «ОК» в диалоговом окне «Конфигурировать библиотеку».
  11. В диалоговом окне «Выбрать библиотеки» должна быть выбрана только что созданная библиотека. (Если нет, выберите его.) Нажмите кнопку «Добавить выбранный».
  12. Нажмите OK в диалоговом окне «Структура проекта».

Подробнее см. В разделе «Настройка зависимостей и библиотек модулей» в Справочном руководстве (также на странице web here).

Теперь, когда вы развертываете свое веб-приложение в Tomcat с помощью конфигурации запуска/отладки Tomcat, библиотека будет развернута вместе с остальной частью вашего кода. См. Раздел «Запуск/Отладка конфигурации: Tomcat» в справочном руководстве IDEA (или на web here) для получения дополнительной информации.

+0

Зависимость уже в моем определении проекта. Это странно, потому что я могу использовать зависимость за пределами Tomcat просто отлично, но она выдает ошибку, когда она содержится в сервлете Tomcat. – user2066880

+0

Исправление, я только заметил, что ошибка переключилась на «NoClassDefFoundError» для моей зависимости – user2066880

1

Вышеупомянутая ошибка подразумевает jar, содержащий класс org.mongodb.morphia.Morphia отсутствует в пути к классу. Поэтому убедитесь, что в библиотеке вашего веб-приложения lib или tomcat есть банку, содержащую указанный класс. Я думаю, вы можете получить банку с here.

0

https://stackoverflow.com/a/42824675/2538853

Это связано с Morphia банка не является частью вашей выходной войны/банку. Eclipse или локальная сборка включает их как часть пути к классам, но удаленные сборки или сборка auto/schedule не учитывают их как часть пути к классам.

Вы можете включить зависимые банки с помощью плагина.

Добавить ниже фрагмент кода в плагинах разделе вашего POM в

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>3.0.0</version> 
    <configuration> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
</plugin>