Eclipse使用bin / META-INF / persistence.xml

时间:2014-06-17 09:44:32

标签: java eclipse jpa locking persistence.xml

在Eclipse Kepler 4.3.2的干净安装上,安装不包括JPA方面,Spring,无论如何 - 只是简单的Java,我一直遇到这个奇怪的问题。

在构建项目但未运行一次时,文件bin / META-INF / persistence.xml一直在使用。 Eclipse因此拒绝重建项目,而且在Eclipse运行时我无法删除该文件。

此锁定不会发生在同一文件夹中的任何其他(XML)文件或任何其他文件夹中的任何文件中。只是那个文件。由于没有安装任何Hibernate或JPA工具的Eclipse应该没有这个文件重要性的概念,为什么会这样呢?甚至原始源文件都没有锁定!

我该如何调试?

4 个答案:

答案 0 :(得分:1)

对我有用(我正在使用EAR项目> EJB模块)将所有配置文件从prj-root / src / META-INF移动到prj-root / resources / META-INF文件夹,然后我相应地修改了我的Ant脚本以生成程序集。

编辑:当使用hibernate-jpamodelgen生成实体的静态元模型时会发生这种情况。升级到至少4.3.9,你就可以解决问题(见https://hibernate.atlassian.net/browse/HHH-9528)。

答案 1 :(得分:1)

我认为您使用的是Windows。就像jpangamarca提到的那样,Eclipse Luna遇到了同样的问题,并且在Eclipse本身解决之前提出了一个临时解决方案。

  

我该如何调试?

我使用Process Explorer找出锁定我的xml文件的进程。在应用程序中,转到菜单查找 - >查找句柄或DLL ...(Ctrl + F),填写文件路径,它将列出使用您的文件的所有进程。在这种情况下很可能是eclipse.exe。然后,您可以返回主屏幕,在下方面板中选择文件,然后右键单击,然后选择“关闭手柄”(或单击“删除”)。

在我觉得有必要的时候,我写了一个小批处理文件来方便地做到这一点:

@echo off
for /f "tokens=3,6,8 delims=: " %%i in ('handle -p eclipse e:\git\ ^| grep ".xml\|.xmi\|.htm"') do echo Releasing %%k & handle -c %%j -y -p %%i

(将e:\ git \替换为限制损坏范围的路径,使用grep仅释放特定文件类型的锁)

要使批处理工作,您需要在系统路径中使用以下实用程序:

对于具有UAC(win 7/8)的Windows,您需要以管理员身份运行它。否则它会告诉你。

答案 2 :(得分:1)

这发生在我身上,在我的情况下,根本原因是Hibernate JPA 2 Metamodel Generator:https://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single/

我找到的唯一解决方案是使用EclipseLink的Canonical Model Generation https://wiki.eclipse.org/UserGuide/JPA/Using_the_Canonical_Model_Generator_%28ELUG%29

答案 3 :(得分:0)

句柄脚本对我有用,但也许是我的过程我必须搜索 javaw 而不是 eclipse

相关问题