Java 指定persistence.xml和provider时找不到它们

Java 指定persistence.xml和provider时找不到它们,java,hibernate,Java,Hibernate,当我运行单元测试时,我发现了这两个错误 org.hibernate.jpa.boot.internal.PersistenceXmlParser-doResolve 信息:hh000318:在类路径中找不到任何META-INF/persistence.xml文件 及 javax.persistence.PersistenceException:没有名为dbContext的EntityManager的持久性提供程序 我不能同时得到它们,因为正如您在本文下面的image en persistence

当我运行单元测试时,我发现了这两个错误

org.hibernate.jpa.boot.internal.PersistenceXmlParser-doResolve 信息:hh000318:在类路径中找不到任何META-INF/persistence.xml文件

javax.persistence.PersistenceException:没有名为dbContext的EntityManager的持久性提供程序

我不能同时得到它们,因为正如您在本文下面的image en persistence.xml文件中所看到的,他所抱怨的一切都在那里

这里是我的persistence.xml

    <?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="dbContext">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.url" value="{urltodb}"/>
            <property name="hibernate.connection.autocommit" value="false"/>
            <property name="hibernate.connection.username" value="{myusername}"/>
            <property name="hibernate.connection.password" value="{mypassword}"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
            <property name="hibernate.connection.CharSet" value="utf8"/>
            <property name="hibernate.connection.characterEncoding" value="utf8"/>
            <property name="hibernate.connection.useUnicode" value="true"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

您的文件夹结构完全混乱:

您的src文件夹被标记为源文件夹蓝色,因此子文件夹main被解释为Java包 资源文件夹位于sources/main文件夹中,这就是Intellij将其解释为包main.resources.META-INF的原因。 所有真正的软件包都以大写字母开头。这不是一个错误,但不寻常 文件夹结构的外观:

src/main/java=>将此标记为源文件夹,并将所有java包放在那里 src/main/resources=>将此文件夹标记为resources文件夹,然后将META-INF放在那里
另请参见:

它不应该在src/main/resources/META-INF中吗?是的。Intellij只是表现出不同,我不知道为什么。但当我将鼠标悬停在持久性文件上时,它表示它位于scr/main/resources/META-INF中