2

我正在尝试使用 spring 3.0 实现缓存

以下是与集成相关的代码:

<bean id="cacheManager" class="net.sf.ehcache.CacheManager">
    <constructor-arg index="0" type="java.net.URL" value="classpath:ehcache.xml"/>
</bean>

在 application-context.xml 文件中

我有一个有效的 ehcache.xml 文件,但由于应用程序在到达那里之前就爆炸了,所以它从未被读取过,我收到的错误如下:

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [net.sf.ehcache.CacheManager] for bean with name 'cacheManager' defined in ServletContext resource [/WEB-INF/spring/application-context.xml]; nested exception is java.lang.ClassNotFoundException: net.sf.ehcache.CacheManager
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.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:302)
at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:185)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:805)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:762)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:556)
... 30 more
Caused by: java.lang.ClassNotFoundException: net.sf.ehcache.CacheManager
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
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)

有谁知道我做错了什么?

4

3 回答 3

0

如果您从 Eclipse 启动项目,请检查您是否已将 ehcache 库添加到“部署程序集”列表中。

打开项目的属性对话框->“部署程序集”并在那里添加库。

hth

于 2012-01-18T08:08:33.637 回答
0

似乎您应该将 ehcache-core jar 添加到您的类路径中......但请注意添加正确的版本。

编辑:

注意ehcache是用在artifactId而不是ehcache-core

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>1.6.1</version>
</dependency>

再次运行 mvn install 后,确保正确的 jar 驻留在本地存储库中并且它包含正确的类。

于 2012-01-18T07:07:20.170 回答
0

请将您的 ehcache jar 添加到 web-inf/lib 目录。

如果您使用的是 Maven,请将其添加到您的 pom.xml 中。

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.4.7</version>
</dependency>
于 2012-01-18T07:17:37.283 回答