java.sql.SQLException:没有为jdbc找到合适的驱动程序:mysql:// localhost:3306 / sushi

时间:2012-08-01 11:36:32

标签: java mysql eclipse hibernate maven

我有一个使用jar文件(lib)访问数据库的Web应用程序。 当用作独立应用程序时,jar文件正确执行,但是webapp收到错误:

[01-08-12 13:17:05] - 35266 WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 08001

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/myapp

我已经阅读了类似问题的答案,但没有一个能解决我的问题。

我正在使用Maven,我在其中添加了我正在使用的mysql版本的依赖项,5.1.21。事实上,我已经为Lib和Webapp添加了它。

在此之前,我尝试在Eclipse中定义一个绑定到同一文件的连接驱动程序定义,我已经在我的Webapp的eclipse项目中复制到WEB-INF / lib,并且我在下面包含了相同的参数persistence.xml文件

我没有使用任何java配置,因为我在persistence.xml文件中执行了所有配置(我已经复制到META-INF文件夹,app(lib)和webapp)。我正在通过JPA使用Hibernate(4.1.2)。

persistence.xml文件是这样的:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">

<persistence-unit name="myappPersistenceUnit"
    transaction-type="RESOURCE_LOCAL">
    <provider> org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myapp" />
        <property name="javax.persistence.jdbc.user" value="root" />
        <property name="javax.persistence.jdbc.password" value="" />
    </properties>
</persistence-unit> 

</persistence>

我得到的异常是在运行时,当向应用程序启动Http请求时,而不是在webapp的初始化时,我没有看到任何错误,但出现此警告:

  

[01-08-12 13:16:39] - 8782警告   org.hibernate.engine.jdbc.internal.JdbcServicesImpl - HHH000342:   无法获取与查询元数据的连接:没有合适的驱动程序   找到jdbc:mysql:// localhost:3306 / myapp

我想这是因为在init时没有必要从数据库中查找信息,并且没有抛出异常,但在两种情况下都是相同的根本原因。

编辑:我正在使用Tomcat 6.0

任何帮助都将受到高度赞赏。

5 个答案:

答案 0 :(得分:3)

您的项目中似乎缺少MySql驱动程序。要解决此问题,您需要添加mysql-connector.jar。在项目外部。 或者,如果您使用的是maven项目,请在pom.xml文件中使用以下依赖项。

  <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.4</version>
  </dependency>

如果需要,您可以使用合适的版本!!

答案 1 :(得分:1)

如果您将应用程序作为Java应用程序运行,请在Eclipse中的Java Build Path中添加JAR文件。

或者,我不会将MSQL jar放在您的Web项目的WEB-INF/lib文件夹中,而是将其放在Application文件夹库文件夹中,Application Server将加载您的驱动程序并且您可以访问它来自Application Server容器。

答案 2 :(得分:1)

你应该将mysql连接器jar与你自己的代码放在一起在您的项目中添加jar文件。

答案 3 :(得分:0)

之前我也有同样的问题,但我解决了这个问题。此例外可能有不同的原因。

其中一个可能是您要添加到jar文件夹的lib可能已经过时了。尝试找出最新的mysql-connector-jar版本并将其添加到classpath。它可以解决您的问题。

答案 4 :(得分:0)

我在Tomcat 9中也遇到了同样的问题。解决了以下问题:在common / lib和WEB-INF / lib中都没有使用驱动程序jar。