2016-09-06 4 views
0

간단한 문제가있어서 도움을 요청하고 있습니다.org.springframework.beans.factory.CannotLoadBeanClassException : 클래스를 찾을 수 없습니다.

다음
package service; 

    import java.util.List; 

    import dao.Produit; 
    import dao.ProduitDAO; 

public class ProduitImplMetier implements ProduitMetier { 


    private ProduitDAO dao; 

    public void setDao(ProduitDAO dao) { 
     this.dao = dao; 
    } 

    @Override 
    public void addProduit(Produit p) { 
     dao.addProduit(p); 
    } 

    @Override 
    public void deleteProduit(Long id) { 
     dao.deleteProduit(id); 
    } 

    @Override 
    public List<Produit> getAllProduit() { 
     return dao.getAllProduit(); 
    } 

    @Override 
    public Produit getProduitById(Long id) { 
     return dao.getProduitById(id); 
    } 

} 

내 봄-beans.xml 환경의 :

다음
package dao; 

import java.util.ArrayList; 
import java.util.List; 

public class ProduitImpl implements ProduitDAO{ 

    private List<Produit> produits=new ArrayList<Produit>(); 

    public List<Produit> getProduits() { 
     return produits; 
    } 

    public void setProduits(List<Produit> produits) { 
     this.produits = produits; 
    } 

    public void init(){ 
     System.out.println("www.sybaway.com"); 
    } 

    @Override 
    public void addProduit(Produit p) { 
     p.setIdProduit(new Long(produits.size()+1)); 
     produits.add(p); 
    } 

    @Override 
    public void deleteProduit(Long id) { 
     produits.remove(getProduitById(id)); 
    } 

    @Override 
    public Produit getProduitById(Long id) { 
     Produit produit=null; 
     for(Produit p:produits){ 
      if(p.getIdProduit().equals(id)) 
       produit=p; 
       break; 
     } 
     return produit; 
    } 

    @Override 
    public List<Produit> getAllProduit() { 
     return produits; 
    } 

    @Override 
    public void updateProduit(Produit p) { 

    } 

} 

내 ProduitImplMetier.java입니다 : 여기

Exception encountered during context initialization - cancelling refresh attempt: 

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot 
find class [dao.ProduitImpl] for bean with name 'sybaway' defined in 
ServletContext resource [/WEB-INF/spring-beans.xml]; nested exception 
is java.lang.ClassNotFoundException: dao.ProduitImpl 


GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [dao.ProduitImpl] for bean with name 'sybaway' defined in ServletContext resource [/WEB-INF/spring-beans.xml]; nested exception is java.lang.ClassNotFoundException: dao.ProduitImpl 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1208) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:568) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1277) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:844) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:539) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5068) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    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: dao.ProduitImpl 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701) 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:258) 
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1229) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1200) 
    ... 18 more 

공장입니다 : 여기

는 예외 메시지입니다
<?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:tx="http://www.springframework.org/schema/tx" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 


<bean id="sybaway" init-method="init" class="dao.ProduitImpl" ></bean> 

<bean id="sybawayServices" class="service.ProduitImplMetier" > 
    <property name="dao" ref="sybaway" ></property> 
</bean> 

</beans> 
+0

spring-beans.xml을 공유 할 수 있습니까? –

+0

내 spring-beans.xml을 공유했습니다. – khalid

+0

Strange. 응용 프로그램을 정리하고 다시 작성할 수 있습니까? – Jens

답변

0

예외는 무엇이 누락되었는지 명확하게 알려줍니다.

CLASSPATH에서 Java 가상 머신 (JVM)이 DAO 클래스 ProduitImpl.class을 찾을 수 없다는 것을 알려줍니다.

CLASSPATH는 JVM이 .class 파일을 검색하여 JVM 메모리에로드하고 그 내부에서 코드를 실행하는 시스템의 "위치"(또는 폴더)입니다.

.java 개의 파일에서 .class 개의 파일을 만들려면 .java 파일을 컴파일해야합니다.

Maven과 같은 빌드 도구로 쉽게 할 수 있습니다. 하나의 메이븐 명령으로

: 당신은 위의 설명 달성 할 수

mvn compile 

, 메이븐은 단순히처럼, 당신 된 .java 파일을 취합니다

ProduitImpl.java

그리고 ProduitImpl.class에서 생성됩니다 파일.

플러스 메이븐은 .class 파일을 CLASSPATH에 저장합니다.

+0

나는 build/classes/dao 디렉토리에 ProduitImpl.class 파일을 가지고있다. – khalid

+0

그런 다음 JVM이 다른 잘못된 시스템 위치에서 CLASSPATH를 읽으려고한다고 가정한다. 이클립스 에디터 내에서 출력 폴더가 어디인지 알아 내려고 _IO_ Java Build Path_italic_에서 찾아 볼 수있다. Maven 빌드 도구에 대한 기회를주세요. 이것이 제 선택입니다. 더 쉽게 할 수 있습니다. –

관련 문제