Почему завершение кода 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';
}