Подтвердить что ты не робот

Maven/Eclipse: не удалось найти файл META-INF/persistence.xml в пути к классам

Я знаю, что есть другие вопросы по поводу этой проблемы, но ни одно из решений не сработало для меня. Я использую maven для создания проекта java в eclipse, и у меня есть файл persistence.xml в папке src/main/resource/META_INF. Но когда я пытаюсь установить mvn, я всегда получаю эту ошибку:

No Persistence provider for EntityManager named plasma.persistence

Просматривая вывод консоли, это вызвано следующим:

[org.hibernate.jpa.boot.internal.PersistenceXmlParser] - HHH000318: Could not find any META-INF/persistence.xml file in the classpath

Вот мой файл persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">
<persistence-unit name="plasma.persistence" transaction-type="RESOURCE_LOCAL">
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.spatial.dialect.postgis.PostgisDialect"/>
        <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
        <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432:xxxxx"/>
        <property name="hibernate.connection.username" value="xxxxx"/>
        <property name="hibernate.connection.password" value="xxxxx"/>
        <property name="hibernate.connection.pool_size" value="5"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.format_sql" value="true"/>
        <property name="hibernate.max_fetch_depth" value="5"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
    </properties>
</persistence-unit>

Я попытался щелкнуть правой кнопкой мыши по проекту и добавить папку META_INF в путь сборки, и он все еще не работает. Любые идеи?

4b9b3361

Ответ 1

Собственным домом для файла персистентности должен быть src/main/resources/META-INF. В этом вопросе вы указываете src/main/resource/META_INF. Обратите внимание: в META-INF должны быть "s" в ресурсах и тире (-), а не подчеркивание. Это просто опечатки в вопросе? Если нет, исправьте путь, и он должен работать.

Ответ 2

Я положил исключение, и maven остановился, чтобы поместить persistence.xml. Я должен был использовать жестокую силу для исправления:

    <resources>
        <!-- After this maven stopped to put parsistence.xml-->
        <resource>
            <directory>src/main/resources/CATALINA_HOME/conf</directory>
            <excludes>
                <exclude>log4j.properties</exclude>
                <exclude>jpa_stocks.properties</exclude>
            </excludes>
        </resource>
        <!-- Brutal force to fix -->
        <resource>
            <directory>src/main/resources/META-INF</directory>
            <targetPath>META-INF</targetPath>
            <includes>
                <include>persistence.xml</include>
            </includes>
        </resource>
    </resources>

Ответ 3

META-INF должен быть непосредственно под проектом, это сработало для меня удачи