簡體   English   中英

org.springframework.beans.factory.CannotLoadBeanClassException:找不到類

[英]org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class

我面臨一個簡單的問題,正在尋求幫助。

這是異常消息:

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

這是工廠:

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:

    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);
    }

}

這是我的spring-beans.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: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>

該異常清楚地表明了缺少的內容。

它告訴您Java虛擬機(JVM)在CLASSPATH中找不到DAO類ProduitImpl.class

CLASSPATH是系統上JVM的“位置”(或文件夾),JVM在其中查找.class文件,以將它們加載到JVM內存中並在其中執行代碼。

為了從您的.java文件中“創建” .class文件,您需要編譯.java文件。

使用Maven之類的構建工具可以輕松完成此操作。

使用單個Maven命令:

mvn compile

您可以實現上述描述,Maven只需獲取您的.java文件,例如:

ProduitImpl.java

並從中創建ProduitImpl.class文件。

另外,Maven會為您將.class文件放在CLASSPATH中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM