Почему я продолжаю получать "Оценки должны содержать либо выражение, либо блок хорошо сформированных утверждений"?
В моем коде я пытаюсь вывести значение src
в окне выражений.
public void doIt() {
String src = "test";
System.out.println(src);
}
В Eclipse. Я установил точку останова на строке 3, и я открою окно "Выражения".
Я добавляю выражение src
для оценки, и я получаю
![Evaluations must contain either an expression or a block of well-formed statements]()
Я использовал функции Expressions... COUNTLESS раз в годы моей отладки Java. Почему это происходит сейчас?
Недавно я начал использовать Eclipse Juno.. vs Indigo. Они изменили способ работы выражений?
Ответы
Ответ 1
Если ваш код использует какие-либо дженерики, вы можете проверить эту ошибку:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=341232
Происходит во всех версиях Eclipse до 4.2. Короче говоря, некоторые генерические выражения заставляют Eclipse полностью терпеть неудачу при любой оценке (см. Этот пример: https://bugs.eclipse.org/bugs/attachment.cgi?id=224760). Не уверен, использует ли ваш код какие-либо дженерики, но если это так, возможно, это так. Обратите внимание, что достаточно иметь один из неприятных дженериков где-то в вашем классе, не обязательно в вашем методе.
Ответ 2
Проверьте, есть ли у вас обновленная версия Eclipse, выглядит эта проблема fixed в Eclipse 3.3
Моя версия Eclipse версии 3.8.2, и если я оцениваю выражение в строке 2, то также получаю ту же ошибку, но в строке 3 ее правильно оценивают.
Ответ 3
Я просто потратил TONS времени, чтобы понять, что если вы создадите пакет "Foo", и внутри этого пакета вы создадите класс под названием "Foo", например:
package Foo;
public class Foo{
public Foo () {};
}
После того, как вы впервые используете этот класс в своей программе, вы больше не сможете использовать выражения:
import Foo.Foo; //this is the devil i think
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
//debug expressions works fine
Foo tmp = new Foo();
//debug expressions wouldn't work anymore
}
});
}
Эта ошибка может быть воспроизведена до текущего Eclipse Neon 4.7.
Ответ 4
У меня была та же проблема, и я удаляю общий метод в моем коде. Это работает для меня.