我正在尝试将ehcache
(v2.6.0)添加到我的Hibernate 4.1.5.SP1
项目中,但是存在一些配置问题。具体来说,当我尝试使用以下命令构建配置时,出现了java.lang.NoClassDefFoundError
:org/hibernate/cache/EntityRegion
错误Hibernate
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
这是我的 Maven 依赖关系…
<hibernate.version>4.1.5.SP1</hibernate.version>
<hibernate.validator.version>4.3.0.Final</hibernate.validator.version>
<ehcacheVersion>2.6.0</ehcacheVersion>
...
<!-- Hibernate dependencies -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate.validator.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>${ehcacheVersion}</version>
</dependency>
这是我用来配置它的Java代码…
Configuration config = new Configuration()
.setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect")
.setProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver")
.setProperty("hibernate.connection.url", "jdbc:hsqldb:mem:myprojectTestDb")
.setProperty("hibernate.connection.username", "sa")
.setProperty("hibernate.connection.password", "")
.setProperty("hibernate.connection.pool_size", "1")
.setProperty("hibernate.connection.autocommit", "true")
.setProperty("hibernate.cache.provider_class", "org.hibernate.cache.HashtableCacheProvider")
.setProperty("hibernate.hbm2ddl.auto", "create-drop")
.setProperty("hibernate.show_sql", "true")
.setProperty("hibernate.current_session_context_class", "thread")
.setProperty("hibernate.cache.use_second_level_cache", "true")
.setProperty("hibernate.cache.region.factory_class", "net.sf.ehcache.hibernate.EhCacheRegionFactory")
.addAnnotatedClass(Organization.class)
.addAnnotatedClass(State.class)
.addAnnotatedClass(Country.class)
.addAnnotatedClass(Domain.class)
.addAnnotatedClass(Community.class);
final ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
sessionFactory = config.buildSessionFactory(serviceRegistry);
这是可怕的错误。我缺少什么配置?
java.lang.NoClassDefFoundError: org/hibernate/cache/EntityRegion
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:386)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:251)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2270)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2266)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1735)
at org.mainco.subco.orgsclient.service.OrganizationServiceTest.setupOrgServiceTest(OrganizationServiceTest.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.EntityRegion
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 32 more
ehcache-core文件基本上是针对Hibernate 3.x的。Hibernate 4.x带有自己的ehcache实现。您无需在hibernate
4.x中显式使用ehcache。这是您问题的最佳答案。
http://web.archive.org/web/20130117102553/http://www.javacraft.org/2012/03/migrate-
to-
hibernate-4-ehcache.html
问题内容: 我正在尝试在Tomcat中进行部署时在Eclipse中使用Hibernate进行初始设置。 我遇到以下问题: 我已经在线浏览了我的问题,并且我知道这与项目类路径有关。 我已在我的项目中添加了一个用户库,其中包含hibernate下载中“必需”目录下的所有jars,但这似乎不起作用。 请在这里找到我的项目的屏幕截图: 问题答案: 您收到错误消息是因为hibernate库对Tomcat不可
Disk Cache 配置Disk Cache(storage.config) 1、编辑/etc/trafficserver/storage.config 目录配置方式 # 目录 分配大小 /var/cache/trafficserver 256M 裸盘配置方式 # 直接填写磁盘进去,一行一个 /dev/sdb /dev/sdc /dev/sdd 2、重启应用 /
问题内容: 在tomcat 7中部署应用程序时,我从此pom.xml运行mvn tomcat7:run时遇到此错误。在我的依赖项中,我想问题可能是由于相依软件包的混合版本引起的。 这是../../pom.xml: 问题答案: 此类是在4.xx版本中添加的,您将不会在Hibernate 3中找到它 可能是您的Maven依赖关系树中有2个版本。 你需要: 跑 检查您有多少个版本以及哪些其他3rd oa
Cache 类别能让你快取资源大量操作的结果。 配置 Cache 类别预设透过 fuel/core/config/cache.php 配置档案来配置。 它已经填入预设设定,你可以藉由添加一个相同名称的配置档案, 到你的应用程序 config 资料夹,并在此设定你想要的变更,以覆写此设定。 这些将覆写核心配置,但保持你没有覆写的部份。 以下全域配置值可以被定义: 参数 类型 预设 描述 driver
我在Spring驱动的应用程序中使用Hibernate (4.2.15.Final)和EhCache (2.6.9)作为二级缓存,建立了一个非常标准的持久层。 一切正常。然而,将条目放入二级缓存有时需要很长时间。 我已经在显式文件(我没有配置默认缓存): 我在持久性上下文启动时记录了以下INFO消息: 并且在执行期间发出以下警告 AFAIK < code > ObjectGraphWalker 必