您好我正在使用以下
冬眠核-4.1.2.Final.jar
MySQL的连接器-5.1.6.jar
两者都可以在我的项目lib目录中找到。
我有以下 hibernate.cg.xml 配置。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Defines the SQL dialect used in Hiberante's application -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!--Local Database Connection-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/domain</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">test</property>
<property name="hbm2ddl.auto">validate</property>
<property name="show_sql">false</property>
<property name="format_sql">false</property>
<property name="use_sql_comments">false</property>
<property name="hibernate.search.default.directory_provider">ram</property>
</session-factory>
</hibernate-configuration>
我得到以下异常。
Caused by: java.sql.SQLException: No suitable driver found for
jdbc:mysql://localhost:3306/domain at
java.sql.DriverManager.getConnection(DriverManager.java:604) at
java.sql.DriverManager.getConnection(DriverManager.java:190) at
org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:192)
at
org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:278)
at
org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
... 145 more
我不想使用JNDI做的事实管理层希望尽可能保持应用程序的可移植性,所以我错过了使用jdbc的方法吗?我是否需要对tomcat进行任何配置?
Tomcat Lib
答案 0 :(得分:6)
尝试将mysql-connector-5.1.6.jar直接放入tomcat的 lib文件夹并重新启动它。
答案 1 :(得分:4)
您是否尝试过调用驱动程序类?:
Class.forName("com.mysql.jdbc.Driver");
如何称呼它:
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
// error out
}
Connection con = DriverManager.getConnection(/*your connection query*/);
我的课程可能有误,但如果com.mysql.jdbc.Driver
不起作用,您也可以尝试com.mysql.JDBC
或com.mysql.jdbc
(基于SQLite如何调用它)
答案 2 :(得分:1)
您是否编辑了配置以隐藏连接字符串? 您的hibernate配置具有与错误不同的数据库名称:
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/domain</property>
Caused by: java.sql.SQLException: No suitable driver found for
jdbc:mysql://localhost:3306/etss
在可移植性方面,我用我的战争打包数据库驱动程序,因此它是自包含的。这使得跨多个环境的部署变得更加容易,如果另一个开发人员想要在本地构建和运行,他们只需要将战争放入Tomcat并继续。将数据库驱动程序放在WEB-INF / lib文件夹中。
另外,就可移植性而言,我推荐JNDI ......这样你就不必在将hibernate配置文件部署到另一台服务器时编辑你的hibernate配置文件,它可以在你的战争中保持打包状态。您只需在Tomcat配置中添加JNDI引用。
答案 3 :(得分:0)
发生异常是因为mysql数据库驱动程序不在您的类路径中。将其添加到类路径以修复问题。由于您使用的是tomcat,因此只需将其添加到 tomcat / lib 目录即可。
答案 4 :(得分:0)
我建议将驱动程序放在JDK扩展目录所在的位置。请参阅:http://www3.ntu.edu.sg/home/ehchua/programming/howto/ErrorMessages.html#zz-4.1
一旦完成,我鼓励您从提示类型输入: 回声%CLASSPATH%