Почему завершение кода Eclipse не работает в некоторых проектах?

У меня есть Eclipse 3.3.2 с PDT, занимающимся разработкой PHP. Все проекты, которые я создаю, даже проекты SVN имеют завершение кода. Сейчас я только что открыл другой проект SVN, и у него нет завершения кода или PHP-шаблонов (CTRL-space ничего не делает в этом проекте). Тем не менее, я могу открыть другие проекты и завершить работу кода в них.

Почему завершение кода и шаблоны могут быть отключены только в одном проекте, и как я могу включить его снова?

17 ответов

Решение

Может быть, Eclipse не понимает, что у проекта есть "природа PHP". Попробуйте сравнить файл.project в обоих проектах, чтобы найти различия. Он должен содержать что-то вроде:

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

Файл.project будет находиться в вашей рабочей области в каталогах проекта.

Посмотрите на файл.buildpath в вашем проекте... поместите эту строку между тегом:

<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>

Сохраните его и перезапустите затмение. Теперь все должно быть в порядке... Это сработало для меня.:)

Это всего лишь одна строка, которую нужно добавить в файл.project, а затем перезапустить eclipse, чтобы получить завершение кода: где говорится

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

после изменения должно быть

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

Это должно сделать.

Спасибо! Я провел целый день, чтобы выяснить, почему у меня не было завершения кода...

Проблема в том, что при создании проекта SVN.project является базовым файлом без ссылки на завершение кода. Вы должны создать базовый проект PHP и сравнить два файла и заменить недостающую часть в проекте SVN.

Теперь у меня есть завершение кода для каждого файла в проекте, даже для библиотеки Zend Framework

@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>

когда вы импортируете существующий проект, затмение не генерирует файл.buildpath, но вы можете добавить его вручную или создать новый проект PHP с существующим в источнике (вы можете выбрать в мастере).

У меня иногда такая же проблема. Для меня это работает, чтобы перестроить проект PHP с "Project" -> "Clean".

Если у вас есть эта проблема, выполните следующие действия:

  • Выберите "PHP Включить путь" в дереве вашего проекта
  • Щелкните правой кнопкой мыши на нем, затем нажмите "Build Path>Configure Build Path"
  • В открывшемся окне добавьте папку, которую вы хотите создать, чтобы она могла помочь при кодировании.

Вот и все:) Я надеюсь, что это решит вашу проблему, я решил свою одну:)

Убедитесь, что файл открывается в "редакторе PHP". Щелкните правой кнопкой мыши файл и выберите " Открыть с помощью", чтобы выбрать нужный редактор.

Если окажется, что вы используете не тот редактор, вы можете изменить ассоциацию в разделе " Настройки" "Общие" Типы контента

Щелкните правой кнопкой мыши на экране редактирования, перейдите в раздел Java -> Редактор -> Помощник по содержимому -> Дополнительно... выберите предложения соответственно

ВНИМАНИЕ

Помимо уже упомянутых решений для получения полной помощи автозаполнения, есть еще одна странность: она может быть не включена.

Перейдите в "Окно"> "Свойства", а затем в "PHP"> "Редактор"> "Помощник по коду" (JAVA имеет аналогичную опцию) и установите "Включить автоматическую активацию", желательно с задержкой, которую вы считаете комфортной (0 мс). Если вас беспокоит, что программа вдруг решает что-то сделать для вас без подсказок (и делает это неправильно), снимите флажок "Автоматически вставлять отдельные предложения", и все будет в порядке.

У меня была проблема с тем, что путь сборки был пуст, поэтому не было завершения кода ни для одного из файлов, которые я пытался редактировать. Убедитесь, что вы правильно настроили путь сборки, особенно если вы связываете источник из какого-то другого места, кроме рабочего пространства.

Например, в папке apache htdocs.

Я решил эту проблему, включив индексатор Full C/C++ (Windows-> свойства -> C/C++ -> Indexer), а также установил переключатель "Использовать активную конфигурацию кнопок". После этого очистите и соберите все.

Это работало на Eclipse CDT 3.4

Иногда я замечал, что когда вы извлекаете проект из svn в eclipse (subversive или subsclipe "извлекаете проект как"), и даже если вы извлекаете его как проект php, он либо удалит файл.project, либо будет общим проект. Я нашел просто зайти в этот каталог и удалить.project.settings/ и.cach/

Затем создайте новый проект php и укажите каталог, в котором вы извлекли файлы. И у вас должно быть завершение кода, а svn должна быть ссылкой на ваш репозиторий.

Проверьте библиотеку вашего проекта. Возможно, вы включили два таких jar-файла, в которых доступен один и тот же класс, или, например, один класс в коде может быть связан с двумя jar-файлами. В этом случае также затмение прекращает помогать коду, поскольку он полностью запутан.

Лучший способ проверить это - перейти к файлу, в котором помощник не работает, и прокомментировать там все операции импорта, чем добавлять импорт по одному и проверять при каждом импорте, работает код-помощник или нет. Вы можете легко найти класс с дублирующимися ссылками.,

Мне пришлось щелкнуть правой кнопкой мыши проект в PHP Explorer, перейти к "Путь сборки PHP". Это было пусто. Я нажал "Добавить папку", установил флажок рядом с корневой папкой моего проекта и нажал "ОК", затем снова "ОК".

После этого завершение кода, похоже, сработало. Должен просто работать из коробки, если вы спросите меня, но что угодно.

Если вы пришли сюда в поисках завершения кода в php eclipse, не работающем, убедитесь, что ваш проект поддерживается как проект php. Щелкните правой кнопкой мыши по проекту и перейдите к настройке -> Добавить поддержку php. Если у вас есть правильные настройки для помощника по коду, он должен работать мгновенно. Иногда я, новичок, работаю над проектами или начинаю проекты как чистые, а не как php, так что eclipse не знает, как относиться к проекту.

Одним из решений может быть включение фиктивного php-файла, который требует всех ваших классов PHP. Так что синтаксический анализатор PHP также распознает эти классы. Пример пустого файла:

if(false) {
     require_once 'class/one.php';
     require_once 'class/two.php';
     require_once 'class/three.php';
}
Другие вопросы по тегам