2012-08-01 136 views
0

我有一个使用jar文件(lib)访问数据库的web应用程序。 使用时,作为一个独立的应用程序执行正确,但web应用程序接收到错误的jar文件:java.sql.SQLException:找不到适合jdbc的驱动程序:mysql:// localhost:3306/sushi

[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中定义绑定到同一个文件的连接驱动程序定义,我已将它复制到eclipse项目中的WEB-INF/lib中用于我的Web应用程序,并具有与下面包含的相同参数persistence.xml文件

我没有使用任何java配置,因为我做了persistence.xml文件中的所有配置(我已经复制到两个META-INF文件夹,一个用于应用程序(lib)和。在一个web应用程序,我通过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请求到应用程序的时候,而不是在web应用程序,在那里我还没有看到任何错误的初始化,但是出现这样的警告除外:

[01-08-12 13:16:39] - 8782 WARN org.hibernate.engine.jdbc.internal.JdbcServicesImpl - HHH000342: Could not obtain connection to query metadata : No suitable driver found for jdbc:mysql://localhost:3306/myapp

我想这是由于在init中没有必要从数据库中查找信息,并且在这两种情况下都不会引发异常,而是出现相同的根本原因。

编辑:我使用的是Tomcat 6.0

任何帮助将得到高度赞赏。

+0

你有没有检查你的类路径? – Kayser 2012-08-01 11:38:43

+0

请添加您使用的应用服务器 – mavroprovato 2012-08-01 11:40:10

+0

@Kayser,类路径不应该由tomcat和maven管理? (我正在同时检查) – Picarus 2012-08-01 11:43:32

回答

1

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

或者,我不会把MSQL jar放到您的web项目的WEB-INF/lib文件夹中,而是放在您的应用程序文件夹库文件夹中,应用程序服务器将加载您的驱动程序,您可以从Application Server容器。

+0

我的webapp将lib作为java构建路径中的jar文件。另外,当为mysql添加Maven依赖项时,我将它从web-inf/lib文件夹 – Picarus 2012-08-01 12:00:27

+0

@Picarus中移除,请遵循此建议。将MySQL依赖关系设置为Maven中的“提供”,并将MySQL jar复制到'TOMCAT_HOME'/server/lib – mavroprovato 2012-08-01 12:03:16

+0

@mavroprovato,我已将该库(提供)添加到TOMCAT_HOME/lib,这是我版本中的现有文件夹。同样的错误。文件夹是否一样?我尝试了两种选择,但都失败了。 – Picarus 2012-08-01 12:16:26

1

你应该把你自己的代码与mysql连接器jar &添加jar文件与您的项目。

0

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

其中一个可能是您添加到您的lib文件夹的jar可能是旧的。试着找出最新的mysql-connector-jar版本,并将其添加到您的classpath。它可能会解决你的问题。

2

看来你在你的项目中缺少MySql驱动程序。为了解决这个问题,你需要添加mysql-connector.jar。外部到您的项目。 或者,如果您使用的是Maven项目,那么在您的pom.xml文件中使用以下依赖项。

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

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

相关问题