我面临一个简单的问题并寻求帮助。
这是例外消息:
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>
答案 0 :(得分:0)
该异常清楚地说明了遗漏的内容。
它告诉您,您的Java虚拟机(JVM)在您的CLASSPATH中找不到您的DAO类ProduitImpl.class
。
CLASSPATH是系统上的“位置”(或文件夹),您的JVM会在其中查找.class
文件以将其加载到JVM内存中并执行其中的代码。
要从.class
文件中“创建”.java
文件,您需要编译.java文件。
使用像Maven这样的构建工具可以轻松完成。
使用单个Maven命令:
mvn compile
您可以实现上述描述,Maven将简单地使用您的.java文件,例如:
ProduitImpl.java
并将从ProduitImpl.class
文件创建。
Plus Maven会将.class
文件放在您的CLASSPATH中。