【问题标题】:Configuring hibernate 4.2.1 in a maven project在一个maven项目中配置hibernate 4.2.1
【发布时间】:2018-02-27 11:07:26
【问题描述】:

我正在一个 maven 项目中配置 Hibernate 4.2.1,并且我正在使用 MS SQL JDBC 连接到 SQL Server 数据库。当我运行我的课程测试时,我收到以下错误:

WARN : org.hibernate.internal.util.xml.DTDEntityResolver - HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
Exception in thread "main" org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver com.microsoft.sqlserver.jdbc.SQLServerDriver could not be loaded
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:111)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:78)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2293)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2289)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1758)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1798)
    at com.lbv.test.Test.main(Test.java:12)
Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Unable to load class [com.microsoft.sqlserver.jdbc.SQLServerDriver]
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:149)
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106)
    ... 14 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.microsoft.sqlserver.jdbc.SQLServerDriver
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:296)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:146)
    ... 15 more

朋友们,我需要你们的帮助。

【问题讨论】:

  • 在我看来您没有 SQL 驱动程序(即缺少依赖项)?
  • 不,我有 jdbc mssql 依赖项。 com.microsoft.sqlservermssql-jdbc6.3.6.jre8-previewtest
  • 当您收到“java.lang.ClassNotFoundException”时,最好确保部署的 WEB-IF/lib 文件夹中存在正确的 .jar

标签: java hibernate mssql-jdbc


【解决方案1】:

您需要从您的依赖声明中删除<scope>test</scope>。您不仅将驱动程序用于测试,还用于实际运行时使用。

指定 <scope>test</scope> 将指示 Maven 仅在运行测试时加载依赖项。您还应该问自己是否真的要使用预览版,而不是正式发布的版本(即:6.2.2.jre8)。

【讨论】:

    猜你喜欢
    • 2018-07-10
    • 2016-04-29
    • 2017-07-04
    • 2011-11-10
    • 2019-12-08
    • 2016-07-25
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多