Eclipse总是在构建工作区。

39

通常情况下,当我们勾选了“项目->自动构建”选项后,只有在项目源代码发生更改时才会进行构建。但是当我勾选了这个选项后,无论项目是否有更改,我的eclipse都会一直构建——大约每2到3秒一次。我可以从右下角的状态栏看到“正在构建工作区…”。

这种行为让我的eclipse变得很慢,CPU使用率也一直很高,真的很烦人。

我使用的是适用于Java EE开发人员的eclipse 3.7版本,以及m2e、Maven Integration for WTP、Git插件、Subclipse和Google插件、Checkstyle、FindBugs等等。

有什么办法吗?

附:我使用的操作系统是Win 7,内存容量为8GB。


构建可能会卡住,永远无法完成。是启动和停止还是一直存在?每当您进行任何最小的更改时,它都会发出一个构建。 - Mukul Goel
就像我说的那样,它并不总是在构建...它大约每2-3秒钟构建一次,持续几秒钟然后停止,然后再构建...如果我取消“自动构建”的选中,它就会停止。 - Mike
2
看起来你的构建过程中有一部分正在修改源代码包。仔细检查一下你的构建过程,你就会发现它。 - Mukul Goel
3
我发现在“工作区:使用本地钩子或轮询进行刷新”中存在问题。可能值得知道。 - Rudy Vissers
@Rudy 如果这是一个解决方案,你应该将你的评论转化为一个回答。这让我找到了解决问题的正确方法。 - L. G.
我遇到了类似的问题,我所做的是取消勾选“自动构建”。进入项目--自动构建。 - rajeev pani..
15个回答

20

我刚刚禁用了自动构建项目功能,那个无休止的循环真的很烦人。

前往:

项目 -> 自动构建


1
窗口 > 首选项 > 通用 > 工作空间 > 构建 > 自动构建。这是针对Eclipse IDE企业级Java开发人员的版本:2019-09 R(4.13.0),构建ID:20190917-1200。 - hipokito
它起作用了,谢谢你。 - Kumaresan Perumal

18

我以前见过蚂蚁构建时出现这种效果。

你可能在Maven构建中有某个输出到其中一个源文件夹或其子目录的东西。Eclipse检测到文件已更改并启动新的构建。


1
谢谢,根本原因是我在项目中添加了注解处理,这干扰了构建过程。 - Mike
我的Maven构建在源目录中生成了一个“Version.java”文件,从而触发了无限循环。- 关键词:资源、过滤、目标路径 - koppor
1
Eclipse 应该添加一个选项,明确排除某些文件或文件夹不被监视更改,或者不会因为它们的更改而触发工作区构建(即仅将某些文件标记为生成的)。如果我从构建路径中删除了生成的源代码,Eclipse 就会抱怨编译错误。如果我将生成的源代码添加到构建路径中,Eclipse 的自动构建循环会在源代码生成期间不断触发自身(呃!)。如果我忽略某些 m2e 插件进行增量构建或完全禁用自动构建,事情就会变得陈旧。这真是一种痛苦! - Robin479
@Robin479:好建议。我认为你应该在Eclipse问题跟踪器中创建一个问题/请求功能。 - Axel

8
在Eclipse中,我需要禁用首选项 -> 工作区 -> 访问时刷新,感谢Rudy Vissers的评论指明了正确的方向。

3
首先,这是 偏好设置 -> 常规 --> 工作空间 -> 访问时刷新。其次,对我来说取消勾选该选项并没有解决问题。然而,取消勾选 自动构建 却停止了不断的构建。第三,现在每当需要时我都需要手动构建项目...不确定是否喜欢这个解决方案,因为 IDE 的整个目的就是为我做手动工作。 - Tihamer

5
我遇到了同样的问题。
在“项目 X”中,我通过“项目->属性->Android->库->添加...”添加了一个库引用。
该库项目被设置为“Is Library”= true。在这个库项目中,我在“项目->属性->项目引用”下选择了另一个“项目 X”。
因此,两个项目相互引用,在自动构建时导致无限循环。
删除其中一个引用以停止这种无限构建。也许这可以帮助某些人。

这对我很有效。我只需右键单击appcompat_v7项目>属性>Android>取消选中“Is Library”。 - Tom Lenc

5
这个问题的原因可能是将目标文件夹标记为源文件夹。 检查和解决方法如下: 右键单击 项目 -> 首选项 -> Java构建路径 -> 源码 如果有,从列表中删除目标文件夹。

我使用cxf-codegen-plugin将SOAP端点生成到target/generated-sources/中,并且在持续运行构建时没有任何问题,效果很好。 - andrej
如果你这样做,Eclipse可能会因为缺失源代码而抱怨编译问题。 - Robin479

2

将javaPlease42的回答进行扩展

项目-> 属性 -> 工作区 -> 自动构建

取消勾选,然后点击"应用并关闭"


与上述回答无关,我已经将我的项目移动到C盘,我发现我的共享驱动器访问速度太慢,这也是反复显示正在构建并且速度缓慢的原因之一。

注:Original Answer翻译成"最初的回答"


0

如果您生成的代码需要包含在构建路径中,则可以将以下内容添加到pom.xml中,以便Eclipse Maven Builder跳过相关插件的生成步骤。请参见<ignore/>部分。

在下面的示例中,是openapi-generator-maven-plugin导致target/generated-sources被重新生成,由于该文件夹已添加到构建路径中,因此导致Eclipse再次、再次、再次地重新生成代码...

您仍然可以通过菜单Run As-> Maven generate-sources随时手动生成代码。

        <pluginManagement>
            <plugins>
                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.openapitools</groupId>
                                        <artifactId>openapi-generator-maven-plugin</artifactId>
                                        <versionRange>[0.1,)</versionRange>
                                        <goals>
                                            <goal>generate</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore></ignore>
                                    </action>
                                </pluginExecution>
                                                                
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>     

0

这两个项目相互引用。

进入“项目->属性->项目引用”,检查两个项目的引用,这会在自动构建时导致无限循环。


0

对我来说,在Eclipse Kepler中的操作如下。

右键单击项目/单击项目菜单 -> 属性 -> Java Build Path -> 选择源选项卡 -> 如果存在,则删除目标文件夹

上述方法对我有效,但在此之前,我尝试了以下方法,但均未成功。

  • 结束Eclipse进程并重新启动
  • 重新启动java.exe进程
  • 重新启动我的电脑

0

我认为我已经找到了一种方法,可以启用使用本地钩子或轮询进行刷新访问时刷新自动构建,而不会出现无休止的编译循环。

请按照以下步骤操作

右键单击项目->属性->C/C++构建->刷新策略选项卡->仅添加Debug或Release目录,而不是整个项目。


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