2017-01-23 1 views
0

JPA 2.1, Hibernate 및 MariaDB를 사용하여 기본 CRUD를 만들려고합니다. 엔티티 관리자 팩토리를 만들 수 없습니다. 드라이버를로드 할 수 없습니다.

내가 톰캣에 내 프로젝트를 실행하려고

, 나는이 오류가 :

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 

내 데이터베이스가 실행됩니다. maven을 통해 JDBC 드라이버를 얻었고 JAR이 Maven Dependencies 폴더에 있습니다.

<?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

귀하의 입력이 잘못 여기의 persistence.xml이다 (I 프로 JPA 2.1 교과서의 예제를 따라). javax.persistence.jdbc.driver은 JDBC 드라이버의 CLASS NAME으로 설정되어야합니다. JAR 이름이 아닙니다.

<property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver"/> 
관련 문제