Помощник по содержимому Eclipse не работает в некоторых частях кода

Я использую Eclipse Juno, и у меня никогда не было с ним проблем, пока его помощник по содержимому не перестал работать только в некоторых частях моего кода. В приведенном ниже коде показано, о чем я говорю:

mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        mWTBatch.setText(mRTBatch.getText());
        mWTExp.setText(mRTExp.getText());
        mWTName.setText(mRTName.getText());
        mWTQuantity.setText(mRTQuantity.getText());
        /* Here content assist is not working */
    }
});
mWTBatch.setText("Here it is working again");

Этот фрагмент кода находится только внутри одного метода моего класса. Проблема в том, что он отлично работает внутри методов класса, но внутри объектов (new ActionListener(){}) возвращает "Нет предложений по умолчанию". У него такое поведение, когда я либо использую «Ctrl + пробел», либо набираю «.» после объекта, о котором я хочу получить предложения. Я уже искал здесь решение и гуглил его, но не смог найти решение. Что я уже пробовал:

  • Window->Preferences->Editor->Content Assist->Advanced и проверил Java Proposals. Это не сработало. Я даже пытался проверить это сам, не используя только Restore Defaults. Я также попробовал Java Proposals из другой таблицы. Ничего такого. Наконец я попробовал проверить все поля с Java на них. Ничего не сработало.
  • Полностью удалил папку моей рабочей области, создал новую и импортировал свой проект. Поскольку мой проект взят из репозитория SVN, я использовал папку проекта внутри папки «trunk», но не копировал содержимое папки в рабочую область при импорте (мне нужно, чтобы она была в репозитории). Все равно ничего, продолжает с ошибкой.
  • Я воспроизвел ту же ситуацию кода выше в другом классе другого проекта, который также был импортирован в рабочую область, но его содержимое было скопировано в него. Вспомогательный контент worked для этого.
  • Затем я повторно импортировал проект с исходным кодом сверху, но на этот раз скопировав его содержимое в рабочую область (что означает, что он больше не имеет ничего общего с репозиторием SVN). Это didn't work либо.
  • Я также проверил, привязан ли ctrl+space к помощнику по содержимому в настройках Eclipse, и все в порядке. Я также проверил, не связано ли это с расширенными настройками клавиш языковой панели Windows 7. Я видел в Интернете, что это может быть проблемой, но это был не мой случай.
  • Я даже создал новый Java-проект в рабочей области и скопировал файлы .java один за другим из старого проекта, задал вручную все пути сборки, и в итоге он все равно не работает.

Для всех первых четырех случаев выше я также чистил проекты и закрывал и открывал их заново, не забывая обновлять его после каждого действия. Может ли кто-нибудь сказать мне, как это исправить? Я хотел бы найти решение этой проблемы, чтобы другие не могли быть такими, как я, в течение 2 дней. Я думаю, что мой вопрос важен, потому что я собираю здесь много вероятных решений, найденных путем поиска проблемы в Google и из StackOverflow, и ничего не решило ее.


person Claudio Eddy    schedule 12.09.2013    source источник
comment
Та же проблема. Не могу понять это. Один день он работает, другой день он мертв. Off, чтобы оставить комментарий на www.ihateeclipse.com   -  person Gaurav    schedule 04.03.2014
comment
Я видел, как Content-Assist терпел неудачу в некоторых случаях, когда в коде были синтаксические ошибки.   -  person Raedwald    schedule 01.11.2014


Ответы (2)


Я наткнулся на эту проблему на днях и, увидев этот пост, подумал, что мне придется просто жить с этим.

Тем не менее, я нашел «хак» вокруг него:

mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener(   //<---------------------- Problem arises because we're inside a function declaration ...
    new ActionListener()
    {   // <--------------------------------------------- ... yet we're trying to write a function
        public void actionPerformed(ActionEvent e)
        {
            /* Here content assist is not working */
        }
    }
);
mWTBatch.setText("Here it is working again");

С точки зрения контент-помощников это просто неправильно, поэтому нам нужно немного помочь:

mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener(
    new ActionListener()
        // <--------------------------------------------- CURLY BRACKET MISSING
        public void actionPerformed(ActionEvent e)
        {
            /* Here content assist IS WORKING */
        }
    }
);
mWTBatch.setText("Here it is still working");

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

Еще один момент: если вы удалите только открывающую фигурную скобку, как я сделал выше, то eclipse НЕ будет автоматически добавлять другую закрывающую фигурную скобку в большинстве случаев (потому что к тому времени, когда вы вводите новую открывающую фигурную скобку, у вас есть уравнял открытие и закрытие фигурных скобок). Вы можете обойти это, удалив закрывающую фигурную скобку, но тогда вам нужно не забыть вернуть две фигурные скобки.

Надеюсь, это поможет 1165 просмотрам, которые этот вопрос собрал за последний год =)

person user3303504    schedule 01.11.2014

Выполните поиск «Изменить язык интерфейса» в меню «Пуск». 'Изменить клавиатуру' > Посмотрите, есть ли у вас раскладки, отличные от английского, в разделе 'Общие' > '< strong>Установленные службы». Если у вас больше, чем просто английский, то нажатие Ctrl+Пробел переключает ваш фокус с Eclipse на селектор языка на панели задач. Удалите любые другие языки клавиатуры из списка, если это ваша проблема.

person zippox    schedule 01.05.2014