java.sql.SQLException: 在 Hibernate 中找不到合适的驱动程序 jdbc:oracle:thin 错误

java.sql.SQLException: No suitable driver found for jdbc:oracle:thin error in Hibernate

我正在尝试将休眠与我的应用程序连接,但我遇到了异常,这是在多次尝试之后我也无法解决它。下面是我完整的堆栈跟踪:

Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:244)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
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 com.sample.pack1.MunimCustBillingUI.main(MunimCustBillingUI.java:121)

Caused by: org.hibernate.exception.JDBCConnectionException: Error calling DriverManager#getConnection
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:115)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convert(BasicConnectionCreator.java:101)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:123)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionCreator.makeConnection(DriverManagerConnectionCreator.java:37)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:89)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:234)
... 14 more

Caused by: java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@Akash-VAIO:1521:XE
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionCreator.makeConnection(DriverManagerConnectionCreator.java:34)
... 24 more

以下是我的 hibernate.cfg.xml 文件配置:

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>

    <session-factory>
        <property name="hibernate.connection.driver.class">oracle.jdbc.OracleDriver</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@Akash-VAIO:1521:XE</property>
        <property name="hibernate.connection.username">hr</property>
        <property name="hibernate.connection.password">hr</property>
        <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>

        <mapping class="Employees.hbm.xml"/>
    </session-factory>
 </hibernate-configuration>

下面是我的 java class 代码:

    public static void main(String[] args) {
    Employees e = new Employees();
    e.setFirst_name("Akash");
    e.setLast_name("Narayan");
    e.setEmail("xyq@gmail.com");
    e.setHire_date(new Date());
    e.setJob_id("IT_PROG");

    SessionFactory sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    session.save(e);
    tx.commit();
    session.close();
}

我的数据库是 Oracle 10.2.0,我的 class 路径中有以下 jar: antlr-2.7.7, dom4j-16.1, geronimo-jta_1.1_spec-1.1.1, hibernate-commons-annotations-5.0.0, hibernate-core-5.0.2.Final, hibernate-jpa-2.1-api-1.0.0.Final, jandex-1.2.2.Final, javassist-3.18.1, jboss-logging-3.30.Final, ojdbc14_g

有什么建议吗?

看起来你有一个旧的 JDBC 驱动程序。正如@j0d0 所说,使用包 oracle.jdbc.driver.OracleDriver。要使用包 oracle.jdbc.OracleDriver,您需要一个新的驱动程序,例如 ojdbc6-11.2.0.2.0.jar.

而且,请不要使用 org.hibernate.dialect.OracleDialect。它已被弃用。请改用 org.hibernate.dialect.Oracle10gDialect