javax.la persistance.PersistenceException: Pas de fournisseur de Persistance pour l'EntityManager nommé sample

Je suis de l'utilisation d'Hibernate Entity Manager. Il se plaint qu'il ne peut trouver de fournisseur de persistance, mais encore les journaux dans les journaux :

    TRACE 2011-02-21 22:17:52,843 [main](Ejb3Configuration.java:321) org.hibernate.ejb.Ejb3Configuration - PersistenceMetadata(version=2.0) [
        name: sample
        jtaDataSource: null
        nonJtaDataSource: null
        transactionType: RESOURCE_LOCAL
        provider: org.hibernate.ejb.HibernatePeristence
        useQuotedIdentifiers: false
        classes[
        ]
        packages[
        ]
        mappingFiles[
        ]
        jarFiles[
        ]
        hbmfiles: 0
        properties[
            hibernate.connection.username: scott
            hibernate.connection.password: tiger
            hibernate.dialect: org.hibernate.dialect.OracleDialect
            hibernate.show_sql: true
            hibernate.connection.url: jdbc:oracle:thin:@localhost:1521:krsna
            hibernate.archive.autodetection: class, hbm
            hibernate.connection.driver_class: oracle.jdbc.driver.OracleDriver
        ]]
    Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named sample
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
        at EMPersistDemo2.main(EMPersistDemo2.java:26)

Il est évident qu'il le trouve, journaux ...mais jette toujours l'exception.
Ai-je raté quelque chose ?

Je suis à l'aide de maven et j'ai placé persistence.xml dans src/main/resources/META-INF.
Son contenu sont :

    <!-- persistence.xml -->
    <persistence ...>
       <persistence-unit name="sample">
        <provider>org.hibernate.ejb.HibernatePeristence</provider>
        <!-- Scan for annotated classes and Hibernate mapping XML files -->
        <properties>
           <property name="hibernate.archive.autodetection" value="class, hbm"/>
           <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
           <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:krsna"/>
           <property name="hibernate.connection.username" value="scott"/>
           <property name="hibernate.connection.password" value="tiger"/>
           <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
           <property name="hibernate.show_sql" value="true"/>
        </properties>
        </persistence-unit>

    </persistence>

org.mise en veille prolongée.Ejb3Configuration est en mesure de le trouver javax.persitence.La persistance n'est pas en mesure de le trouver:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("sample");
  • Comment êtes-vous en cours d'exécution de votre code? Il se pourrait que le chemin de la META-INF n'est pas dans votre classpath
  • Je suis en cours d'exécution de cette comme une simple main() du programme. META-INF/persistence.xml se trouve dans src/main/resources. Qui est compilé dans D:/arun/mavenprojects/hibernateHawa/target/classes/META-INF/persistence.xml. Et quand j'ai imprimé CLASSPATH, j'ai vu D:/arun/mavenprojects/hibernateHawa/target/ comme la première entrée. Alors, évidemment, META-INF/persistence.xml est dans le CLASSPATH. Je ne sais pas d'où Ejb3Configurer est venu dans les journaux et dit qu'il pourrait en mesure de le trouver. Mais ma ligne de code de Persistance.createEntity Manager("sample")...throws Exception.