【问题标题】:Why does Eclipse code completion not work on some projects?为什么 Eclipse 代码完成在某些项目上不起​​作用?
【发布时间】:2010-09-15 17:00:10
【问题描述】:

我有带有 PDT 的 Eclipse 3.3.2 进行 PHP 开发。 我创建的所有项目,甚至 SVN 项目都有代码完成。 现在我刚刚打开了另一个 SVN 项目,它没有代码完成或 PHP 模板(CTRL-space 在该项目中没有任何作用)。 但是,我可以打开其他项目和代码完成所有工作。

为什么只在一个项目中“关闭”代码完成和模板,我该如何重新打开它?

【问题讨论】:

    标签: php eclipse eclipse-pdt eclipse-3.3


    【解决方案1】:

    也许 Eclipse 不理解该项目具有“PHP 特性”。 尝试比较两个项目的 .project 文件以查找差异。它应该包含以下内容:

     <natures>
      <nature>org.eclipse.php.core.PHPNature</nature>
     </natures>
    

    .project 文件将位于项目目录下的工作区中。

    【讨论】:

    • 因为存储库中有一个 .project 文件,它没有让我有机会使用 PHP 项目向导打开它,我们删除了 .project 文件,重新检查它,现在一切都很好,谢谢!
    • 这仍然没有显示 PHP 内置函数的自动完成功能。
    • 非常感谢!这让我很开心。
    【解决方案2】:

    在你的项目中寻找文件 .buildpath...把这一行放在标签之间:

    &lt;buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/&gt;

    保存并重新启动eclipse。现在一切都应该没问题...这对我有用。 :)

    【讨论】:

    • 随着 .project 的更改,这是使 Eclipse 正确显示内置函数和项目内容的自动完成功能的缺失部分。
    【解决方案3】:

    谢谢! 我花了一整天的时间来弄清楚为什么我没有代码完成......

    问题在于,如果您创建一个 SVN 项目,.project 是一个没有代码完成参考的基本文件。您必须创建一个基本的 PHP 项目并比较两个文件并替换 SVN 项目中缺少的部分。

    现在我对项目中的每个文件都进行了代码补全,即使是 Zend Framework 库也是如此

    【讨论】:

      【解决方案4】:

      只需要在.project文件中添加一行,然后重启eclipse即可获得代码补全: 哪里写的

      ---
       <natures>
       </natures>
      ---
      

      改变后必须是

      ---
       <natures>
        <nature>org.eclipse.php.core.PHPNature</nature>
       </natures>
      ---
      

      应该可以。

      【讨论】:

      • 是的,它有效。性质可以从上下文菜单 -> 属性 -> 项目属性 -> 选择 PHP 并单击确定
      【解决方案5】:

      @Guido PHPNature 没有解决这个问题。

      @Edward Tanguay 是的,那是因为当你创建新的 PHP 项目时,eclipse 添加了 .buildpath 文件

      <?xml version="1.0" encoding="UTF-8"?><buildpath>
      <buildpathentry kind="src" path=""/>
      <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/></buildpath>
      

      当您导入现有项目时,eclipse 不会生成 .buildpath 文件,但您可以手动添加它或使用现有源创建新的 PHP 项目(您可以在向导中选择)。

      【讨论】:

      • 我一直在处理这个问题(我的课程的代码完成,但不是 PHP 核心),现在我终于打破并修复了它,感谢您关于 .buildpath 的提示- 谢谢!
      • 请注意,因为我使用的是较新版本的 Eclipse:进入项目属性并检查 PHP 属性框为我修复了它。默认情况下,它被设置为 Web(主要)和 js 性质。我正在使用 Aptana Studio 插件和 Eclipse 版本:4.0.0.201206120848
      【解决方案6】:

      我有时也会遇到同样的问题。对我来说,它可以使用“Project”->“Clean”重建 PHP 项目。

      【讨论】:

        【解决方案7】:

        如果您遇到此问题,请按照以下步骤操作:

        • 在项目树中选择“PHP 包含路径”
        • 右键单击它然后单击“构建路径>配置构建路径”
        • 在打开的窗口中,添加您要构建的文件夹,以便它可以进行代码辅助。

        就是这样 :) 我希望它能解决你的问题,我解决了我的问题 :)

        【讨论】:

        • 它适用于eclipse项目,但是当我打开使用eclipse的单个php文件时,代码完成不起作用,如何制作
        【解决方案8】:

        确保使用“PHP 编辑器”打开文件。右键单击该文件,然后选择 open with 以选择正确的编辑器。

        如果发现您使用了错误的编辑器,您可以在Preferences » General » Content Types 下更改关联

        【讨论】:

          【解决方案9】:

          在编辑屏幕中右键单击,转到 Java -> Editor -> Content Assist -> Advanced ...选择相应的提案

          【讨论】:

            【解决方案10】:

            注意

            除了已经提到的使整个自动完成帮助工作的解决方案之外,还有另一个怪癖:它可能未启用。

            转到窗口 > 属性,然后转到 PHP > 编辑器 > 代码辅助(JAVA 有类似的选项)并设置“启用自动激活”,最好使用您认为合适的延迟(0 毫秒)。如果您对程序突然决定在没有提示的情况下为您做事(并且做错了)感到困扰,请取消选择“自动插入单个提案”,您应该会没事的。

            【讨论】:

              【解决方案11】:

              我注意到有时当您在 Eclipse 中从 svn 签出项目时(颠覆性或 subscipe“签出项目为”),即使您将其签出为 php 项目,它也会删除 .project 文件或它会是一个通用项目。我发现只需进入该目录并删除 .project .settings/ 和 .cach/

              然后创建一个新的 php 项目并指向您签出文件的目录。你应该有代码完成和 svn 应该链接到你的 repo。

              【讨论】:

                【解决方案12】:

                我遇到了构建路径为空的问题,因此我尝试编辑的任何文件都没有代码完成。确保正确设置构建路径,尤其是在从工作区以外的其他位置链接源代码时。

                例如 apache htdocs 文件夹。

                【讨论】:

                  【解决方案13】:

                  我通过启用完整的 C/C++ 索引器(Windows-> 属性 -> C/C++ -> 索引器)解决了这个问题,并且还点击了单选按钮“使用活动按钮配置”。之后清理并构建所有内容。

                  这适用于 Eclipse CDT 3.4

                  【讨论】:

                    【解决方案14】:

                    如果您来这里是在 php eclipse 中寻找代码补全不起作用,请确保您的项目作为 php 项目被支持。右键单击项目,然后转到配置 -> 添加 php 支持。如果您有正确的代码辅助设置,它应该可以立即工作。有时像我这样的新手会调整项目或将项目启动为干净而不是 php,因此 eclipse 不知道如何处理该项目。

                    【讨论】:

                      【解决方案15】:

                      我必须在 PHP Explorer 中右键单击该项目,转到“PHP Build Path”。这是空的。我点击“添加文件夹”,选中项目根文件夹旁边的复选框并点击“确定”,然后再次点击“确定”。

                      在那之后代码完成似乎工作了。如果你问我应该开箱即用,但无论如何。

                      【讨论】:

                        【解决方案16】:

                        检查项目的库。可能是您包含了两个这样的 jar 文件,其中有相同的类可用,或者说代码中的一个类可以在两个 jar 文件中引用。在这种情况下,eclipse 也会停止辅助代码,因为它完全被混淆了。

                        检查此问题的更好方法是转到辅助不起作用的文件并在其中注释所有导入,而不是逐个添加导入并检查代码辅助是否正常工作。您可以轻松找到该类有重复的引用。

                        【讨论】:

                          【解决方案17】:

                          一种解决方案可能是包含一个虚拟 php 文件,该文件需要所有 PHP 类。这样 PHP 解析器也能识别这些类。 示例虚拟文件:

                          if(false) {
                               require_once 'class/one.php';
                               require_once 'class/two.php';
                               require_once 'class/three.php';
                          }
                          

                          【讨论】:

                            猜你喜欢
                            • 2010-10-28
                            • 1970-01-01
                            • 2014-12-19
                            • 2020-10-21
                            • 2012-03-02
                            • 1970-01-01
                            • 1970-01-01
                            • 2021-12-22
                            • 2016-01-25
                            相关资源
                            最近更新 更多