java - JPA、Maven 和 MySQL。配置错误。找不到类 [com.mysql.jdbc.Driver]

标签 java mysql jpa maven-2 pom.xml

已解决:只需将 mysql-connector-java-5.1.x.jar 放入 JAVA_HOME\jre\lib\ext 即可。

大家好,我刚刚开始构建一个使用 maven、mysql 和 JPA 的演示应用程序,这是我的代码: pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>org.ee6.book</groupId>
<artifactId>chapter02</artifactId>
<version>2.0</version>
<name>Chapter 02 - JPA</name>


<dependencies>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>javax.persistence</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <inherited>true</inherited>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

和我的persistence.xml:

<persistence-unit name="chapter02PU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>org.ee6.book.chapter02.Book</class>
<properties>
    <property name="eclipselink.target-database" value="MYSQL"/>
    <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
    <property name="eclipselink.logging.level" value="SEVERE"/>
    <property name="eclipselink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
    <property name="eclipselink.jdbc.url" value="jdbc:mysql://localhost:3306/chapter02DB"/>
    <property name="eclipselink.jdbc.user" value="root"/>
    <property name="eclipselink.jdbc.password" value="xyz"/>    
</properties>

当执行mvn编译时它很好,但是当我尝试执行主类时

mvn exec:java -Dexec.mainClass="org.ee6.book.chapter02.Main"

我遇到了如下错误:

    [EL Severe]: 2011-06-03 00:23:27.89--ServerSession(26373776)--Local Exception Stack:
Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Configuration error.  Class [com.mysql.jdbc.Driver] not found.
        at org.eclipse.persistence.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:82)
        at org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:267)
        at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:327)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:295)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:415)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:155)
        at org.eclipse.persistence.sessions.server.ConnectionPool.startUp(ConnectionPool.java:433)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:495)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:632)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:230)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:369)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195)
        at org.ee6.book.chapter02.Main.main(Main.java:20)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:291)
        at java.lang.Thread.run(Thread.java:662)

我使用的是 Maven 2.2.1。任何帮助将不胜感激!谢谢

最佳答案

只需添加对具有运行时范围的 MySQL Java 连接器的依赖项即可:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.21</version>
    <scope>runtime</scope>
</dependency>

关于java - JPA、Maven 和 MySQL。配置错误。找不到类 [com.mysql.jdbc.Driver],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218224/

相关文章:

mysql - 子字符串返回定界符后的所有值

PHP/MySQLi : SET lc_time_names and DATE_FORMAT() into a mysqli query?

java - 如何在 hibernate/JPA 中禁用自动更新

java - 如何在 Eclipse 项目中拥有 2 个同名文件,但在 2 个不同的子文件夹中?

java - 在服务器上使用 firebase Java 库,无需身份验证过程

java - 为什么我的应用程序无法从我的 API 读取 JSON?

java - Logback 不登录到文件

mysql - 在 MYSQL LOAD DATA INFILE 中参数化文件名

java - 在 Eclipse 中添加 JPA 连接

java - 为什么我收到 HHH015011 : Unable to locate static metamodel field?