2012-02-20 2 views
2

я нашел подобные вопросы на StackOverflow, но не совсем такой же, как у меня:ClassNotFoundException с Spring 3.1 и Tomcat 7

Я настроил Весеннюю боб «ontologyClient», который является POJO, что я импортирован из библиотека, которая добавляется к моим зависимостям Maven. Я проверил и дважды проверил, что полученный файл WAR содержит класс org.erasmusmc.ontology.OntologyClient. Однако, когда Spring хочет создать экземпляр компонента, Tomcat's classloader выбрасывает ClassNotFoundException. Я из идей, надеюсь, кто-то может мне помочь!

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:task="http://www.springframework.org/schema/task" 

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd"> 

<context:component-scan base-package="nl.lumc.conceptrecognizer" /> 
<context:component-scan base-package="org.nbic.interop.conceptlinker.service.impl" /> 

<bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter"> 
    <property name="baseAddress" value="http://localhost:8080/" /> 
</bean> 

<bean id="ontologyClient" class="org.erasmusmc.ontology.OntologyClient">  
    <constructor-arg index="0" value="localhost" /> 
    <constructor-arg index="1" value="abcde"/> 
    <constructor-arg index="2" value="abcde" /> 
    <constructor-arg index="3" value="Anni2_1_june2009" /> 
</bean> 

<bean id="conceptRecognizerService" 
    class="nl.lumc.conceptrecognizer.services.ConceptRecognizerService" 
    p:ontologyClient-ref="ontologyClient" 
/> 

</beans> 

Tomcat журнала:

Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.22 
Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.22 
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.22/temp 
Using JRE_HOME:  /usr/java/jdk1.7.0 
Using CLASSPATH:  /usr/local/apache-tomcat-7.0.22/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.22/bin/tomcat-juli.jar 
feb 20, 2012 7:56:13 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 
feb 20, 2012 7:56:13 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-7080"] 
feb 20, 2012 7:56:13 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
feb 20, 2012 7:56:13 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 673 ms 
feb 20, 2012 7:56:14 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
feb 20, 2012 7:56:14 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.22 
feb 20, 2012 7:56:14 PM org.apache.catalina.startup.HostConfig deployDescriptor 
INFO: Deploying configuration descriptor ROOT.xml from /usr/local/apache-tomcat-7.0.22/conf/Catalina/localhost 
feb 20, 2012 7:56:14 PM org.springframework.web.context.ContextLoader initWebApplicationContext 
INFO: Root WebApplicationContext: initialization started 
feb 20, 2012 7:56:14 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh 
INFO: Refreshing Root WebApplicationContext: startup date [Mon Feb 20 19:56:14 CET 2012]; root of context hierarchy 
feb 20, 2012 7:56:14 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml] 
feb 20, 2012 7:56:15 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 
INFO: Pre-instantiating singletons in org.s[email protected]7b6d63d5: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,ontologyClient,groundhogManager,conceptProfilesGroundhog,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy 
feb 20, 2012 7:56:15 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons 
INFO: Destroying singletons in org.s[email protected]7b6d63d5: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,ontologyClient,groundhogManager,conceptProfilesGroundhog,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy 
feb 20, 2012 7:56:15 PM org.springframework.web.context.ContextLoader initWebApplicationContext 
SEVERE: Context initialization failed 
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.erasmusmc.ontology.OntologyClient] for bean with name 'ontologyClient' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.erasmusmc.ontology.OntologyClient 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1262) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1331) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:897) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:566) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723) 
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226) 
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.ClassNotFoundException: org.erasmusmc.ontology.OntologyClient 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:257) 
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:417) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1283) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1254) 
    ... 17 more 

Одна вещь, чтобы отметить, что онтология зависимость является локально установленный Maven артефакт. Однако я не вижу, как это может быть причиной, потому что требуемый файл Jar копируется в WEB-INF/lib, как и следовало ожидать.

ОБНОВЛЕНИЕ: Оказывается, Tomcat запускал неправильную кодовую базу. Я переименовал свой webapp, потому что начал новую ветку, но context.xml все еще указывал на старый контекст.

ответ

1

Возможно, это глупый ответ, но удалили ли вы распакованную войну, прежде чем копировать новую? Возможно, в предыдущей версии вашего не было класса OntologyClient.

+0

Спасибо, но это не то. Чистое развертывание дает ту же проблему. – reinouts

0

Я проверил и дважды проверил, что полученный файл WAR содержит класс org.erasmusmc.ontology.OntologyClient

класс внутри .jar файла? если да, то каково местоположение относительно WAR. Есть ли другие файлы .class или .jar внутри одного каталога?

+1

Спасибо, но я нашел причину проблемы. См. Мое обновление выше. – reinouts

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