Eclipse Maven Project中找不到persistence.xml

时间:2014-01-03 16:10:04

标签: java eclipse maven jpa persistence.xml

我无法修复persistence.xml file not found eclipse问题,这是一个非常基本的EJB测试的简单测试项目(Maven Nature),该文件确实在src / main / resources / META-INF / ...这是pom.xml的内容。尝试将文件夹添加到项目的构建路径,更新maven项目。到目前为止没有运气,非常感谢任何帮助,谢谢!

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>LibEE</groupId>
  <artifactId>LibEE</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>

      <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifest>
<mainClass>main.resources.Main</mainClass>

</manifest>
</archive>
</configuration>
</plugin>
   </plugins>
  </build>

  <dependencies>
    <dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>javax.persistence</artifactId>
    <version>2.1.0</version>
    </dependency>

     <dependency>
    <groupId>org.ow2.spec.ee</groupId>
    <artifactId>ow2-ejb-3.0-spec</artifactId>
    <version>1.0.13</version>
</dependency>

<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0.1</version>
<scope>test</scope>
</dependency>


  </dependencies>
</project>

这是persistence.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<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="LibEE" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/LibEE</jta-data-source> <!-- Refers to data source in Enterprise server -->
    <class>main.java.entities.Book</class>
<properties>
    <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
    <property name="eclipselink.logging.level" value="INFO"/>
</properties>


</persistence-unit>

</persistence>

7 个答案:

答案 0 :(得分:9)

persistence.xml文件必须添加到类路径以解决此问题。

请尝试以下操作:

  1. 创建/更新目录src / main / resources / META-INF,将persistence.xml文件放在此处

  2. 运行Maven-&gt;更新项目配置

  3. 通过在Eclipse IDE中右键单击项目,验证是否已将src / main / resources添加到源文件夹(Java资源)&gt;属性&gt; Java构建路径&gt;来源标签。你会在这里找到/ src / main / resources。

  4. 选择Maven-&gt;更新项目配置或项目 - &gt;清理

  5. 如果您构建应用程序,请检查目标// WEB-INF / classes / META-INF / persistence.xml下的persistence.xml文件(或者您如何配置类路径)。

    < / LI>
  6. 就是这样!

答案 1 :(得分:2)

我遇到了类似的问题(但是使用了JDeveloper 11),其中src/META-INF/persistence.xml未包含在我的项目的JAR中(/META-INF/persistence.xml)。

我的解决方法是将以下内容添加到pom.xml(内部<build>):

<resources>
    <resource>
        <directory>src</directory>
        <includes>
            <include>META-INF/persistence.xml</include>
        </includes>
    </resource>
</resources>

答案 2 :(得分:1)

最佳答案是正确的;然而,无论我尝试什么,这种持续(双关语)都无法工作,直到我在Maven的依赖项中包含了hibernate entitymanager。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.3.1.Final</version>
</dependency>

之后它运作得很好。

答案 3 :(得分:0)

解决方案1.在您的pom.xml中,将<sourceDirectory>src</sourceDirectory>替换为<sourceDirectory>src/main/resources</sourceDirectory>

解决方案2.在构建标记

下添加此项
<resources>
        <resource>
            <directory>src</directory>
            <includes>
                <include>**</include>
            </includes>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
 </resources> 

解决方案3。  在你的pom.xml中删除<sourceDirectory>src</sourceDirectory>,然后maven会查找default layout

答案 4 :(得分:0)

  1. 将此代码添加到您的pom.xml中(在&#34; build&#34;部分中)

    <resources>
        <resource>
            <directory>src</directory>
            <includes>
                <include>**</include>
            </includes>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
       </resource>
    

  2. 将persistence.xml放入src / main / resources / META-INF

  3. 转到项目/属性/ Java构建路径/源,选择所有文件夹,单击&#34;删除&#34;,&#34;确定&#34;
  4. 右键单击项目/ Maven /更新项目...,&#34;确定&#34;
  5. 问题似乎是,m2e-plugin添加&#34;排除:**&#34;到src / main / resources文件夹(参见Project / Properties / Java Build Path / Source)。

答案 5 :(得分:0)

所有答案似乎都是正确的。问题是,没有人解释发生了什么。为了更好地理解,我遵循了maven here提供的资源。

<project>
  ...
  <name>My Resources Plugin Practice Project</name>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>[your directory]</directory>
        <includes>
          <include>[resource file #1]</include>
          <include>[resource file #2]</include>
          <include>[resource file #3]</include>
          ...
          <include>[resource file #n]</include>
        </includes>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

答案 6 :(得分:0)

在src-&gt; main-&gt; java-&gt;下创建一个META-INF文件夹(如果不存在) 并放置您的persistence.xml文件。

如果添加了最新的hibernate版本的hibernate-core.jar,则不需要hibernate-entitymanager.jar。