Hibernate5.0.1和Java8;未找到提供程序org.hibernate.type.Java8DateTimeTypeContributor
我正在学习冬眠。我下载了hibernate 5.0.1最终版,并将所需和java8文件夹中的所有JAR复制到我的项目中。我在我的系统中使用Java8JDK 我正在尝试执行一个非常基本的程序:Hibernate5.0.1和Java8;未找到提供程序org.hibernate.type.Java8DateTimeTypeContributor,java,hibernate,jpa,Java,Hibernate,Jpa,我正在学习冬眠。我下载了hibernate 5.0.1最终版,并将所需和java8文件夹中的所有JAR复制到我的项目中。我在我的系统中使用Java8JDK 我正在尝试执行一个非常基本的程序: public class HibernateTest { public static void main(String[] args){ UserDetails user = new UserDetails(); user.setUserId(1);
public class HibernateTest {
public static void main(String[] args){
UserDetails user = new UserDetails();
user.setUserId(1);
user.setUserName("First User");
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
session.close();
}
}
hibernate配置文件也是非常基本的:
org.postgresql.Driver
jdbc:postgresql://localhost:5432/Training
博士后
密码
1.
org.hibernate.dialogue.PostgreSqlDialogue
线
org.hibernate.cache.internal.NoCacheProvider
真的
更新
结果是:
Exception in thread "main" java.util.ServiceConfigurationError: org.hibernate.boot.model.TypeContributor: Provider org.hibernate.type.Java8DateTimeTypeContributor not found
at java.util.ServiceLoader.fail(ServiceLoader.java:231)
at java.util.ServiceLoader.access$300(ServiceLoader.java:181)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:365)
at java.util.ServiceLoader$1.next(ServiceLoader.java:445)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:324)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:356)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at org.vicky.hibernate.HibernateTest.main(HibernateTest.java:19)
请帮帮我。我在那个包里搜索这个丢失的类文件。但事实并非如此。谢谢您的回答。您的类路径中缺少hibernate-java8 jar。你可以找到它。我刚刚把它修好了。我在我的系统中安装了多个EclipseIDE。我发现我在这个项目中使用的是JDK1.7。我已经将它改为JDK1.8,现在一切都很顺利(Windows->preferences->java->installed JRE->Add并指向JDK1.8目录) 但是有人能解释一下eclipse是如何工作的吗? 我已经在我的系统中安装了Java8RE。这可能就是为什么这个特定的eclipse期望Java 8相关的类,但是即使它们被添加到项目中也没有检测到它们,因为它的“installed JREs”设置指向JDK 1.7。不知道eclipse到底发生了什么
感谢您对subodh和danizmax的回答。晚上好 从构建路径库中删除Java8JAR文件 您在类路径中添加了哪些jar文件?您好,我已经添加了hibernate 5.0.1版本Final.zip文件中的所有jar文件。我还将hibernate-java8-5.0.1.Final.jar文件添加到项目中。在build path/configure build path中添加java8,并确保java安装的jre默认值为1.8.Hi danizmax,我已经将hibernate-java8-5.0.1.Final.jar文件添加到项目中。我现在可以在这个jar文件中找到org.hibernate.type.Java8DateTimeTypeContributor。但我仍然得到这个例外。我无法理解为什么编译器没有检测到这个类。您在标题中写了“Hibernate 5.0.1和Java 8”,因此我们假设您的eclipse项目设置为Java 8。我的回答是正确的,尽管您在Java7中又错过了另一个配置。你可以接受我的回答,或者至少通过投票支持我们的贡献来感谢我们。这就是网站的运作方式。我的意图是永远不会让你感到不安。我对你的答案投了更高的票,但可能是因为我的声誉,公众目前看不到这个答案。我在上面的回答中感谢你们两位。如果在我不知情的情况下发生了什么事,请接受我的道歉。您要求我添加一个我已经添加到项目中的jar文件。HibernateRelease5.0.1final.zip文件的java8文件夹包含我在问题中添加的jar文件。我只是添加了我的答案,因为这是一个真正解决了我的问题,也会帮助其他人的答案;确保人们投票。无论如何,这是一个好问题,我敢打赌您还包括了其他一些需要Java8特定功能的HibernateJAR。是的,一些jar必须依赖于这个java8特定的类。eclipse无法检测该类,即使它被添加到项目中,因为“已安装的JRE”是JDK1.7。我刚刚在hibernate 5.0.1版本Final.zip文件的“required”和“java8”文件夹中添加了JAR,该文件是我从hibernate网站下载的。以及postgreSQL jdbc驱动程序。就这样。明天我会进一步调查。晚安