Eclipse JPA项目更改事件处理程序(等待中)

166
为什么每次尝试构建我的项目时,会出现“JPA项目更改事件处理程序(等待)”?
我在工作区中有一些JPA项目,构建我的项目需要很长时间。这还导致GC超限,将6GB的堆空间分配给eclipse。
我目前正在使用Kepler。这个问题在Helios中没有发生过。
有一些BugZilla条目涉及上述错误,但我看到它们已经被修复了,但在4.3.1中不可用?
对于上述问题是否有任何解决方案/解决方法?
谢谢

1
我也在Luna中看到了这个问题。 - Dave
1
在Mars 2中,我也遇到了这个问题。 - JuanN
2
在同一台机器上,我在Neon中遇到了问题,但是在Mars中没有出现... - Bob Yoplait
1
发生在 Neon.2 中,甚至没有使用 JPA。 - Ed Randall
3
它也存在于2020年3月。 - Vishnudev K
显示剩余3条评论
11个回答

175
我遇到了同样的问题,后来发现这似乎是Eclipse Java Persistence Tools(DALI)中已知的一个错误,至少自eclipse 3.8以来就存在,可能会导致Java编辑器中的保存操作极其缓慢
由于这个问题在Kepler(20130614-0229)中还没有完全解决,并且因为我不需要在我的eclipse中使用JPT/DALI,所以我最终手动删除了org.eclipse.jpt功能和插件。
我所做的是:
1.)退出eclipse 2.)进入我的eclipse安装目录
cd eclipse

并执行以下步骤:

*nix:

mkdir disabled
mkdir disabled/features disabled/plugins

mv plugins/org.eclipse.jpt.* disabled/plugins
mv features/org.eclipse.jpt.* disabled/features

windows:

mkdir disabled
mkdir disabled\features 
mkdir disabled\plugins

move plugins\org.eclipse.jpt.* disabled\plugins
for /D /R %D in (features\org.eclipse.jpt.*) do move %D disabled\features

3.) 重新启动eclipse。

启动并首次使用时,eclipse可能会警告您需要重新配置内容辅助。请在偏好设置对话框中进行此操作。

完成。

卸载DALI/JPT后,我的eclipse感觉很好。不再出现UI阻塞和保存文件时等待几秒钟的情况。


10
顺便说一下,Eclipse团队可能应该尝试就每个版本中包含的无法取消选择的功能/项目数量开展讨论,并且或许应该讨论禁用打包功能(如JPT)的方法。 - mwhs
2
如果您在Eclipse Luna Build 4.4.0中遇到“JPA项目更改事件处理程序”停滞的问题,那么@mwhs的解决方案同样适用于Luna(如果您不需要JPA工具)。相反,安装JBoss Hibernate Tools(无论如何都更加强大),如果您正在使用Hibernate。 - Stefan Haberl
3
不错的发现!不幸的是,自2012年8月29日以来,DALI错误已关闭,但两年后我在Luna/STS 3.6.1中仍然遇到相同的问题(使用工作区之外的Git存储库)。我没有尝试您的解决方法,因为我还遇到了远程系统资源管理器速度变慢的问题(尽管我试图禁用它),所以最终我只安装了一个纯Java的Eclipse(甚至不是JEE),并添加了JST服务器适配器和扩展、m2e-wtp和AspectJ开发工具,使用http://download.eclipse.org/tools/ajdt/44/dev/update/。终于快得像闪电一样了。 - Arjan
11
我忘了提到命令move features\org.eclipse.jpt.* disabled\features对我没有起作用(在Win7 x64上),我不得不手动处理这些内容。我怀疑这是因为其中包含文件夹而不是文件,毕竟,当你写了足够多的Windows批处理脚本后,你可能会开始质疑这门语言是否真的是由一支完全由文盲、患有严重注意力缺陷障碍的醉猴组成的实验Microsoft团队设计的。或者你可能会想知道为什么NTFS版本的Windows命令提示符没有预装Unix支持。 - zpangwin
3
令人惊讶的是,这个问题在Eclipse Oxygen(2017年9月)仍然存在,而您的解决方案对我很有帮助。 - Michaël Vreux
显示剩余14条评论

78

我不知道为什么,我的Neon Eclipse还存在这个问题,在Mars版本中似乎也没有被修复,像许多人说的那样。

我发现使用命令太麻烦了,我通过Eclipse安装管理器删除了插件。

Neon: [帮助>安装详细信息>已安装软件]

Oxygen: [首选项>安装/更新>已安装软件]

只需选择插件“Dali Java Persistence Tools-JPA Support”,然后单击“卸载”即可。请注意,我的屏幕下面没有这个,因为我已经卸载了它。

输入图像描述


6
我也删除了"EclipseLink JPA Support"。 - Venu

41

我在Neon.2中仍然遇到同样的问题。我的解决方案是禁用JPA配置器。

打开Eclipse首选项(不是项目首选项!)。 转到Maven--> Java EE Integration,禁用JPA Configurator。 我还禁用了JAX-RS Configurator和JSF Configurator。

从那时起,JPA项目更改事件处理程序不再出现。

如果更改没有立即生效,请重新启动Eclipse。


太好了,谢谢!在我的Mac上,我仍然在Photon 4.8.0中遇到了这个问题,而这是唯一有效的解决方案。 - otter606
这对我有效。 - sunitkatkar
在Eclipse 2020中对我没用。 - coderzzz18

25

我已禁用(取消选中)JPA验证器。

现在每当我保存文件时,只显示一个 JPA 项目更改事件处理程序的任务,以及仅有 2 或 3 个 JPA Java 更改事件处理程序的任务。

而且最重要的是,UI 挂起问题得到解决。

请参考以下屏幕截图所示的设置:

输入图像描述


11
太神奇了 - 我没有勾选JPA验证,但我仍然收到了JPA更改事件处理程序! - Magick
2
这对我很有效。事实上,最好禁用所有功能,仅启用所需功能。例如,如果您不使用“Web项目”,则不需要任何类型的jsp,jsf,html等。这有助于为每个模块/项目微调验证。节省了宝贵的时间 - 很多时间。 - RafiAlhamd

16

有另一种方法可以禁用项目的JPA工具,而不需要卸载JPA功能/插件。 我在https://github.com/Jasig/uPortal 项目上测试了此方法,并在https://bugs.eclipse.org/bugs/show_bug.cgi?id=386171中提到了类似的问题:

  1. 切换到Eclipse项目资源管理器视图以查看启用JPA Facet的项目(应该有“JPA Content”节点);
  2. 选择具有“JPA Content”节点的感兴趣的项目,并从上下文菜单中选择属性或按Alt + Enter显示有关项目的属性对话框;
  3. 在分类树中选择“项目结构”,
  4. 清除项目结构列表中的JPA复选框,然后按OK。

在从上面的仓库禁用uportal-war项目的JPA facet之后,在Eclipse进度视图中我没有看到任何与JPA相关的作业。


6
这可能适用于某些人,但对大多数人来说不可行。我从所有项目中移除了 JPA 方面,但我的环境仍然卡住了。原因可能与 Maven 恢复 JPA 相关,但事实是即使按照这些非常合乎逻辑的步骤操作,也不起作用。 - Calabacin
上面的解决方案在我的Eclipse 2020-03中有效。感谢@dgolovin。 - Alfaz Jikani

9

这是7年前的问题...让我给出一个非常稳定的答案。

我正在使用最近几天发布的eclipse 2021-09版。

关闭JPA项目更改事件处理程序(等待)的方法:

  1. 确保没有eclipse实例在运行。从“窗口” > “首选项” > “验证”中暂停对JPA的验证。

  2. 转到[安装目录]\eclipse\configuration\org.eclipse.equinox.simpleconfigurator

  3. 使用Notepad++、Wordpad或记事本编辑bundles.info文件,删除包含org.[something].jpa(抱歉,我不记得确切的名称:P)的行,并保存文件。

  4. 启动eclipse即可。你将不会看到那些烦人的“JPA项目更改事件处理程序(等待)”消息在eclipse的控制台中。


如果我们执行了第一步,从bundles.info中删除行也同样重要吗?@Akshay - coderzzz18
是的,这将作为两步删除来确保完全删除。 - Akshay
我正在使用 版本:2019-06(4.12.0) 并按照这个步骤进行操作,看起来它正在工作! - Suresh

8

对于 mwhs 的 windows 部分的回答进行微小更正...

由于 Windows 系统太不智能了,所以移动命令无法用于 .\features 文件夹(你可以在文件上使用通配符与 'move' 命令,但显然通配符和文件夹 == 忽略该命令)。无论如何,这应该作为他回答中步骤 #2 的 Windows 片段的替代方法。

作为批处理文件:

@echo off
set eclipse_dir=C:\eclipse_luna

mkdir disabled
mkdir disabled\features 
mkdir disabled\plugins

move plugins\org.eclipse.jpt.* disabled\plugins
for /f %%i in ('dir "%eclipse_dir%\features\org.eclipse.jpt.*" /ad /b') do (
    move "%eclipse_dir%\features\%%i" "%eclipse_dir%\disabled\features\%%i"
)

2

针对Eclipse Photon的解决方案似乎是:

  1. 打开./eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info文件
  2. 删除以org.eclipse.jpt开头的行(只删除org.eclipse.jpt.jpa可能也可以)

2
此外,如果您找不到eclipse目录。因为我在mac上遇到了这样的问题,我们可以记住eclipse正在使用OSGi,所以我们可以进入目标平台并禁用上面描述的功能/插件:org.eclipse.jpt.*。 enter image description here

-1

新版Eclipse似乎已经解决了这个问题。该插件无法与Java企业套件一起使用。


3
我仍然在使用Eclipse版本2020-12 (4.18.0)时遇到这个问题。 - aventurin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接