2017-01-23 5 views
0

Я пытаюсь создать базовый CRUD с JPA 2.1, Hibernate и MariaDB.Не удается построить диспетчер сущностей фабрики, Не удается загрузить драйвер

Когда я пытаюсь запустить свой проект на Tomcat, я получаю эту ошибку:

Caused by: java.lang.ClassNotFoundException: Could not load requested class : mariadb-java-client-1.1.7 
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Unknown Source) 
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226) 
... 50 more 

Моя база данных и работает. Я получаю драйвер JDBC через maven, а JAR присутствует в папке зависимостей Maven. Вот persistence.xml (я последовал примеру в Pro JPA 2.1 текст книги):

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
<persistence-unit name="CRUD"> 

    <properties> 
     <property name="javax.persistence.jdbc.driver" 
        value="mariadb-java-client-1.1.7"/> 
     <property name="javax.persistence.jdbc.url" 
        value="jdbc:derby://localhost:3306/Practice;create=true"/> 
     <property name="javax.persistence.jdbc.user" value="root"/> 
     <property name="javax.persistence.jdbc.password" value="password"/> 
    </properties> 

</persistence-unit> 

POM:

<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>CRUD</groupId> 
<artifactId>CRUD</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 
<build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
      <directory>src</directory> 
      <excludes> 
       <exclude>**/*.java</exclude> 
      </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>3.0.0</version> 
      <configuration> 
       <warSourceDirectory>WebContent</warSourceDirectory> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client --> 
    <dependency> 
     <groupId>org.mariadb.jdbc</groupId> 
     <artifactId>mariadb-java-client</artifactId> 
     <version>1.1.7</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.1.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.1.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-c3p0</artifactId> 
     <version>5.1.0.Final</version> 
    </dependency> 
</dependencies> 

ответ

2

Ваш вклад является неправильным. javax.persistence.jdbc.driver должен быть установлен для НАЗВАНИЯ КЛАССА драйвера JDBC, а не для некоторого имени баночки!

<property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver"/> 
Смежные вопросы