В Java и некоторых других языках целочисленный литерал, начинающийся с 0
, интерпретируется как восьмеричная (база 8).
Для одноразрядных чисел (кроме 08
и 09
, которые не допускаются), результат будет таким же, поэтому вы можете не заметить, что они интерпретируются как восьмеричные.
Например:
010 == 8
024 == 20
Поскольку восьмеричные литералы обычно не то, что вы хотите, вы всегда должны заботиться о том, чтобы никогда не начинать целостный литерал с 0
, если, конечно, вы на самом деле не пытаетесь написать нуль.
Я имел ту же проблему и случайным образом делал такие вещи как (несколько раз):
1) Проект-> Чистый...,
2) близко и открывают Eclipse снова,
3) Выполнение Как...
И это начало работать снова, не изменяя конфигурацию.
В главном правом углу проблемного окна (рядом с минимизируют) существует маленький значок стрелки. Нажмите это и выбор "Настраивает фильтры". Существует фильтр серьезности, который, возможно, был активирован.
На Ganymede проверьте конфигурацию представления задач:
('Настраивают содержание') Оно может быть установлено на 'любом элементе в том же проекте', и Вы могли бы в настоящее время выбирать элемент из проекта.
Или это могло бы быть установлено на рабочем наборе, и этот рабочий набор был изменен
, Удостоверяются, что 'Соответствуют любой конфигурации', выбран.
Я мог бы воспроизвести эту проблему, создав перечисление с нестатическим классом-членом и статическим блоком, перечисляющим его значения:
public enum Foo {
Dummy(new Bar [] {new Bar()});
static {
for (Foo foo: Foo.values());
}
private Foo(Bar [] params) {}
public class Bar {}
}
Этот класс нарушает работу компилятора Ганимеда. Если вы удалите строку в блоке статического инициализатора, код снова будет правильно компилироваться, и вы получите сообщение об ошибке, что не существует включающего экземпляра для нового вызова Bar (), как и ожидалось.
- исправление: приведенное выше относится только к если в проекте есть gaeNature из Google Appengine. Однако если вы получите ошибку, аналогичную упомянутой в исходном вопросе, возможно, вы столкнулись с другой ошибкой компилятора java ...
Я тоже столкнулся с той же проблемой.
После установки плагина m2eclipse я не получал ошибок компиляции Java.
Мое решение состояло в том, чтобы включить управление зависимостями, выбрав «Выбрать проект» -> «Щелкните правой кнопкой мыши» (чтобы открыть контекстное меню) -> m2 Maven -> «Включить управление зависимостями».
Теперь я могу просматривать ошибки компиляции Java.