【问题标题】:Eclipse always Building workspaceEclipse 始终构建工作区
【发布时间】:2012-11-25 14:44:57
【问题描述】:

通常当我们检查 Project->Build 自动时,它会在我们的项目源发生更改时构建,但是当我检查此选项时,我的 Eclipse 总是在构建 - 大约每 2 或 3 秒 - 无论它有变化还是不是。我可以从右下角的状态栏看到“正在构建工作区...”。

令人讨厌的是,这种行为使我的 eclispe 运行缓慢,并且 CPU 始终处于高使用率状态。

我正在为 java EE 开发人员使用 eclipse 3.7、m2e、用于 WTP 的 maven 集成、git 插件、subclipse 和用于 eclipse、checkstyle、findbugs 等的 Google 插件。

有什么想法吗?

P.S 我使用的是 8GB RAM 的 Win 7

【问题讨论】:

  • 要么构建被卡住..永远不会完成..它是开始和停止。还是总是在那里?每当你做任何改变。最轻微的可能..它会发布一个版本。
  • 正如我所说,它并不总是在构建......它大约每 2-3 秒构建一次,继续几秒钟然后停止,然后构建......如果我取消选中“自动构建” ",它会停止。
  • 看起来,您的构建过程的某些部分正在修改源包。完成你的构建过程,你会看到它
  • 我发现 'Workspace':'Refresh using native hooks or polling' 是罪魁祸首。可能值得了解。
  • @Rudy 如果这是一个解决方案,您应该将您的评论转换为答案。这让我走上了解决问题的好道路。

标签: java eclipse


【解决方案1】:

我以前在基于 ant 的构建中看到过这种效果。

您的 maven 构建中可能有一些输出到源文件夹之一或其子目录之一的内容。 Eclipse 检测到文件已更改并开始新的构建。

【讨论】:

  • 谢谢,根本原因是我在项目中添加了注释处理,这会干扰构建过程。
  • 我的 Maven 构建在源目录中生成了一个“Version.java”,从而触发了无限循环。 - 关键字:资源、过滤、目标路径
  • Eclipse 应该添加一个选项,以明确排除某些文件或文件夹的更改,或在它们更改时触发工作空间构建(即简单地将某些文件标记为已生成)。如果我从构建路径中删除生成的源,eclipse 会抱怨编译错误。如果我将生成的源添加到构建路径,eclipse 的自动构建周期会在循环中触发自身,因为生成的源在源生成期间发生了变化(duuh!)。如果我在增量构建期间忽略某些 m2e 插件或一起禁用自动构建,事情就会变得陈旧。这是一种痛苦!
  • @Robin479:好建议。我认为您应该为此在 eclipse 问题跟踪器中创建一个问题/rfe。
【解决方案2】:

我刚刚禁用了我的项目以自动构建。陷入那种无休止的循环真的很烦人。

转到:

项目->自动构建

【讨论】:

  • '窗口>首选项>常规>工作区>构建>自动构建'。这是面向企业 Java 开发人员的 Eclipse IDE,版本:2019-09 R (4.13.0),构建 ID:20190917-1200
【解决方案3】:

在 Eclipse 中,我不得不禁用 Preferences -> Workspace -> Refresh on access,感谢 Rudy Vissers 的评论让我走上了正确的道路。

【讨论】:

  • 首先是Preferences -> 常规 --> Work space -> Refresh on access。其次,取消选中该选项并没有为我解决问题。但是,取消选中 Build automatically *did 会停止不断构建。另一方面,现在我需要在需要时手动构建我的项目......不确定我是否喜欢这个解决方案,因为 IDE 的全部意义在于为我做手动工作。
【解决方案4】:

我遇到了同样的问题。

在一个“Project X”中,我使用“Project->Properties->Android->Library->Add...”添加了一个 Library-Reference。

Library-Project 设置为“Is Library”=true。 在这个 Library-Project 中,我在“Project->Properties->Project References”下选择了另一个“Project X”。

所以这两个项目是相互引用的,并且在自动构建时会导致无限循环。

删除其中一个引用以停止这个无休止的建筑。 也许这可以帮助某人。

【讨论】:

  • 这对我有用。我只是右键单击 appcompat_v7 项目 > 属性 > Android > 取消选中“是库”。
【解决方案5】:

此问题的根源可能是标记为源文件夹的目标文件夹。

要检查并解决此问题: 右键单击项目 -> 首选项 -> Java 构建路径 -> 源代码

从列表中删除目标文件夹(如果存在)

【讨论】:

  • 我使用 cxf-codegen-plugin 将 SOAP 端点生成到 target/generated-sources/ 中,并且在持续运行构建时效果很好。
  • 如果你这样做,eclipse可能会因为缺少源而抱怨编译问题。
【解决方案6】:

将 javaPlease42 答案扩展为

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

取消选中然后“应用并关闭”


与上述答案无关,我已按项目移动到 c 盘,我发现我的共享驱动器访问速度太慢,这也是一次又一次显示构建缓慢进程的原因之一

【讨论】:

    【解决方案7】:

    两个项目相互引用。

    转到“Project->Properties->Project References”并检查两个项目的引用,这会导致自动构建时出现无限循环。

    【讨论】:

      【解决方案8】:

      我们发现,在使用 Chrome 进行调试时,我们最终会运行大量 chromedriver .exe 进程。它们中的大量似乎会导致日食窒息。

      重新启动计算机将解决此问题,但您也可以运行命令来杀死它们。在我当前的测试系统上,驱动程序是:

      chromedriver-win32-2.14.exe

      杀死一个进程的所有正在运行的副本的命令提示符kill命令是:

      taskkill /F /IM

      所以,对我来说,杀死有问题的进程:

      打开命令提示符

      输入:

      taskkill /F /IM chromedriver-win32-2.14.exe
      

      在消除了虚假进程之后,eclipse恢复为一只快乐的小狗……直到下一次产生过多的进程。

      【讨论】:

        【解决方案9】:

        对我来说,它在 Eclipse Kepler 中的工作方式如下。

        右键单击项目/单击项目菜单 -> 属性 -> Java 构建路径 -> 选择源选项卡 -> 删除目标文件夹(如果存在)

        上述方法为我完成了这项工作,但在此之前我尝试了以下不起作用的方法。

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

        【讨论】:

          【解决方案10】:

          我在 Ubuntu Linux 上遇到了同样的问题。当它发生时,我的包开始显示为文件夹,而不是带有方形图标的单个包名称。

          当我查看 eclipse 文件夹时,我有一个名为 C: 的额外文件夹。这是我的计算机文件夹结构的镜像,安装了 eclipse 文件夹。我刚刚删除了这个文件夹并重新启动,它就像一个魅力。

          如果您看到额外的文件夹,请尝试一下。当然,删除需要您自担风险。

          【讨论】:

            【解决方案11】:

            在这种情况下,问题是由在目标目录中生成 JAXB 类(这很好)但使用项目的主 JAVA 包引起的。所以说项目的主要 JAVA 包是 com.proj 然后 JAXB 类有 com.proj.schema 包。这不知何故混淆了 Eclipse(詹金斯很好)。将 JAXB 类的包从 com.proj.schema 更改为 schema。

            【讨论】:

              【解决方案12】:

              我想我已经找到了一种方法来启用Refresh using native hooks or pollingRefresh on accessBuild automatically,而无需无限编译循环。

              请按照以下步骤操作

              右键项目->属性->C/C++ Build->刷新策略 tab->只添加 Debug 或 Release 目录,而不是整个项目。

              【讨论】:

                【解决方案13】:

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

                在下面的示例中,是 openapi-generator-maven-plugin 导致重新生成目标/生成源,并且由于该文件夹被添加到构建路径中,它导致 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>     
                

                【讨论】:

                  【解决方案14】:

                  请参阅上面的 Rudy Vissor,我取消选择“使用本机挂钩或轮询刷新”和“访问时刷新”,问题立即得到解决。使用 Eclipse Oxygen 4.7.1

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-10-25
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-01-31
                    相关资源
                    最近更新 更多