Maven/Eclipse:在类路径中找不到任何 META-INF/persistence.xml 文件

2022-09-05 00:17:15

我知道关于这个问题还有其他关于SO的问题,但没有一个解决方案对我有用。我正在使用maven在eclipse中构建一个java项目,并且我在src / main / resource / META_INF文件夹中有我的持久性.xml文件。但是当我尝试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

这是我的持久性.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文件夹添加到构建路径,但它仍然不起作用。有什么想法吗?


答案 1

持久性文件的正确主目录应该是 src/main/resources/META-INF。在问题中,您提到了 src/main/resource/META_INF 注意,在资源中应该有一个 “s”,在 META-INF 中应该有一个短划线 (-),而不是下划线。这些只是问题中的拼写错误吗?如果没有,请修复路径,它应该可以正常工作。


答案 2

我放了一个排除,专家停下来把坚持.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>

推荐