我无法修复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>
答案 0 :(得分:9)
persistence.xml文件必须添加到类路径以解决此问题。
请尝试以下操作:
创建/更新目录src / main / resources / META-INF,将persistence.xml文件放在此处
运行Maven-&gt;更新项目配置
通过在Eclipse IDE中右键单击项目,验证是否已将src / main / resources添加到源文件夹(Java资源)&gt;属性&gt; Java构建路径&gt;来源标签。你会在这里找到/ src / main / resources。
选择Maven-&gt;更新项目配置或项目 - &gt;清理
如果您构建应用程序,请检查目标// WEB-INF / classes / META-INF / persistence.xml下的persistence.xml文件(或者您如何配置类路径)。
< / LI>就是这样!
答案 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)
将此代码添加到您的pom.xml中(在&#34; build&#34;部分中)
<resources>
<resource>
<directory>src</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
将persistence.xml放入src / main / resources / META-INF
问题似乎是,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。