2017-08-09 127 views
0

我試圖將JPA設置爲我的REST風格的webapi,以便在數據庫上創建CRUD服務。我得到一個persistence.xml中的錯誤Could not find any META-INF/persistence.xml file in the classpath但實際上療法的文件夾中META-INF在類路徑中找不到任何META-INF/persistence.xml文件

1 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.6-Final 
    17 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.6-Final 
    20 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found 
    23 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist 
    27 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling 
    110 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final 
    115 [main] INFO org.hibernate.ejb.Version - Hibernate EntityManager 3.5.6-Final 
    129 [main] INFO org.hibernate.ejb.Ejb3Configuration - Could not find any META-INF/persistence.xml file in the classpath 
    Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named KAPAPLAN 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) 
     at de.ham.ti.kapaplan.database.DBCon.main(DBCon.java:20) 

這裏我的persistence.xml

<persistence 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" 

    version="2.1"> 

    <persistence-unit name="KAPAPLAN" transaction-type="JTA"> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

    <class>de.ham.ti.kapaplan.model</class> 

    <properties> 
     <!-- Configuring JDBC properties --> 
     <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@//***db-domain***/***service-name***" /> 
     <property name="javax.persistence.jdbc.user" value="***user***" /> 
     <property name="javax.persistence.jdbc.password" value="***pw***" /> 
     <property name="javax.persistence.jdbc.driver" value="com.mysema.query.jpa.support.ExtendedOracleDialect" /> 

     <!-- Hibernate properties --> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.format_sql" value="true" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> 
     <property name="hibernate.hbm2ddl.auto" value="validate" /> 

     <!-- Configuring Connection Pool --> 
     <!-- <property name="hibernate.c3p0.min_size" value="5" /> 
     <property name="hibernate.c3p0.max_size" value="20" /> 
     <property name="hibernate.c3p0.timeout" value="500" /> 
     <property name="hibernate.c3p0.max_statements" value="50" /> 
     <property name="hibernate.c3p0.idle_test_period" value="2000" />--> 
    </properties> 
    </persistence-unit> 
</persistence> 

我雙重檢查類似的問題,但他們不解決我的問題。安寧的想法?

編輯:我的Maven的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/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>de.ham.ti.kapaplan</groupId> 
    <artifactId>kapaplan</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>kapaplan</name> 

    <build> 
     <finalName>kapaplan</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <inherited>true</inherited> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.glassfish.jersey</groupId> 
       <artifactId>jersey-bom</artifactId> 
       <version>${jersey.version}</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet-core</artifactId> 
      <!-- use the following artifactId if you don't need servlet 2.x compatibility --> 
      <!-- artifactId>jersey-container-servlet</artifactId --> 
     </dependency> 

     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-moxy</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>com.oracle</groupId> 
      <artifactId>ojdbc6</artifactId> 
      <version>11.2.0</version> 
     </dependency> 
    </dependencies> 
    <properties> 
     <jersey.version>2.16</jersey.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
</project> 
+0

發佈您的項目結構。這是一個maven嗎? – Francesco

+0

我編輯了一個添加的pom結構 – flxplzk

+0

爲什麼你會在一個沒有提供它的jar(hibernate-entitymanager-3.5.6)中尋找一個提供程序「org.hibernate.jpa.HibernatePersistenceProvider」? –

回答

0

我認爲你的項目配置錯誤。 META-INF文件夾應該保留在web maven項目的src/main/webapp的src/main/resources和WEB-INF文件夾中。這裏是一個example,我通過web api做了一些CRUD。

+0

嗯,我認爲你是對的。我建立了一個新項目,它運行良好。謝謝 – flxplzk

0

你需要移動的persistence.xml到一個位置的應用程序服務器的類路徑上。對於Maven項目,通常位於src/main/resources文件夾中。檢查Hibernate文檔以查看Hibernate是否希望該文件位於子文件夾中,或者將其放入類路徑的根目錄是否正確。

相關問題