Как предотвратить создание предупреждений NetBeans "Поддерживаемая исходная версия" для приложения Java 8 с помощью аннотаций?
Как запретить NetBeans генерировать орды предупреждений о сборке, подобных этой? предупреждение: поддерживаемая исходная версия 'RELEASE_7' из процессора аннотаций 'org.netbeans.modules.openide.util.NbBundleProcessor' меньше -source '1.8'
В конечном счете, я хочу создавать свои проекты без предупреждений о сборке. Если у кого-то есть подход, который работает, я очень хочу его услышать.
Нет известных флагов компилятора, чтобы предотвратить эти предупреждения, несмотря на то, что люди жаловались на это годами. Я пробовал обходные пути, но безуспешно, и я изучил слишком много технических блогов (вот некоторые из наиболее полезных): JDK-7184902: Предупреждение "Поддерживаемая исходная версия..." должно быть известно о предупреждении - http://bugs.java.com/view_bug.do?bug_id=7184902 JDK-8037955: предупреждение "Поддерживаемая исходная версия..." должно быть известно о XLint - http://bugs.java.com/view_bug.do?bug_id=8037955 Ошибка 210286 - Предупреждения от процессоров аннотаций при использовании -source 7 - https://netbeans.org/bugzilla/show_bug.cgi?id=210286 Поддерживаемая исходная версия RELEASE_6 от процессора аннотаций org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor меньше, чем source1.7 - Поддерживается версия источника RELEASE_6 от процессора аннотаций org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor меньше, чем source1.7
До сих пор лучшим вариантом была попытка реализовать AntLogger (используя подход, упомянутый в статье об ошибке 210286, и исходный код, который они предоставили для SuppressionFilterAntLogger.java, расположенный по адресу https://netbeans.org/bugzilla/attachment.cgi?id=122191).
Добавление зависимости от модуля Ant не сработало. По-видимому, модуль Ant считается "исключенным модулем", поэтому я не могу просто попросить NetBeans добавить оператор импорта для меня с маленькой красной лампочкой. Вот что потребовалось для компиляции проекта (после многих исследований и экспериментов, чтобы выяснить это): Щелкните правой кнопкой мыши корневой узел приложения модуля и выберите "Свойства проекта", затем перейдите на вкладку "Библиотеки". В списке модулей платформы выделите каждую из следующих записей списка и установите флажки "Включенные". Всякий раз, когда мы выбираем один модуль платформы, мы получим некоторое сообщение об ошибке (расположенное в нижней части диалогового окна) о "но это исключено", поэтому мы охотимся за этим модулем и продолжаем, пока он не включит все, что ему нужно. Установите / включите флажки "Включено" для следующих записей списка: extide|Ant extide | Опции Java ide | Navigator API ide | Project API ide | Project UI Ide | Project UI API ide | Индексирование проектов моста ide | XML Tools API javafx (т.е. выберите все записи в кластере javafx) платформа | API выполнения Снимите / снимите флажки "Включено" для следующих элементов списка: платформа | Оболочка JavaFX Теперь мы можем нажать кнопку Resolve (которая была отключена ранее). Перезапустите среду IDE NetBeans (поскольку она не полностью использует изменения, которые мы только что внесли без полного перезапуска).
После всего этого у меня наконец есть класс SuppressionFilterAntLogger, успешно компилируемый... но NetBeans не вызывает ни один из его методов (и я все еще получаю предупреждения о сборке RELEASE_7)!
Я использую Java 8u66 и среду IDE NetBeans 8.0.2 в Microsoft Windows 7 Professional. Я экспериментирую с этим AntLogger, используя приложение модуля платформы NetBeans, но предупреждения о сборке Java появляются во всех видах проектов.
2 ответа
Я нашел решение этой проблемы, просто удалив кеш Netbeans. Взгляните на эту ссылку: Как очистить кеш в NetBeans , чтобы сделать это.
Если вы на самом деле не используете функции JDK 8, такие как лямбды. Вы можете использовать последнюю версию JDK, но все равно установите уровень источника на 1.7 в свойствах источника. Ваш код может использовать классы от 1.8, но не может использовать лямбда-выражения и т. Д.