`assert` - ключевое слово, компилируемое с помощью Gradle

Я компилирую Java-проект с помощью Gradle. Когда я запускаю gradle build, я получаю:

Task :compileJava FAILED /home/mvh/projects/research/DPM/src/main/java/DPM/bandera/Bandera.java:102: error: as of release 1.4, 'assert' is a keyword, and may not be used as an identifier public static void assert(boolean expr) { ^ (use -source 1.3 or lower to use 'assert' as an identifier) 1 error

По-видимому, при компиляции с javac решением является добавление аргумента -source 1.3 в соответствии с сообщением об ошибке. Поэтому я попытался добавить этот аргумент в gradle следующим образом:

compileJava {
    options.compilerArgs << '-ea'
}

Я также пробовал enableassertions, -enableassertions и ea вместо -ea.

Я тоже пробовал это:

test {
    enableAssertions = true
}

Тоже безрезультатно. Как я могу получить свой файл сборки gradle, чтобы включить утверждения при компиляции моего проекта? Спасибо!

Нет, решение состоит в том, чтобы изменить исходный код, чтобы не использовать assert в качестве идентификатора.

Andreas 17.12.2018 09:25

Я согласен с Андреасом. У вашего кода есть проблема, а не у градиента. Устраните реальную проблему вместо того, чтобы работать над симптомами. И нет, компиляция с уровнем java 1.3 ... это действительно очень плохая идея. Действительно.

GhostCat 17.12.2018 09:26

Я смущен. Если вы компилируете с помощью -source 1.3, т.е. моделируете старый код, в котором утверждений не существовало, почему вы пытаетесь бегать код с включенными утверждениями? Какой смысл включать утверждения, если код компилируется без них?

Andreas 17.12.2018 09:26

@Andreas Я не думаю, что компилировать с 1.3 особенно хорошая идея, я пробовал только потому, что сообщение об ошибке, казалось, предлагало мне это сделать. Я не очень разбираюсь в Gradle или Java и очень открыт для предложений.

Max von Hippel 17.12.2018 09:54

@MaxvonHippel Значит, это важная часть сообщения об ошибке: «'assert' - ключевое слово и не может использоваться в качестве идентификатора», что означает, что вам нужно отредактировать исходный код и перестать использовать assert в качестве имени метода.

Andreas 18.12.2018 04:25
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
469
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пробовали?

compileJava {
    options.compilerArgs << '-source 1.3'
}

Я должен предупредить вас, что таким образом вы теряете все «современные» языковые функции (например, дженерики).

PS: Правильным решением будет переименование метода assert в класс Bandera.

РЕДАКТИРОВАТЬ Правильный способ установки этого флага -

compileJava {
    sourceCompatibility = 1.3
}

Метод переименования - лучший способ решить эту проблему.

Это не «предупреждение», а простое указание на отказ. Тем не менее, теоретически это решило бы проблему, так что голосуйте за творчество ;-)

GhostCat 17.12.2018 09:25

@GhostCat да, но если OP этого хочет, что я могу сделать?

talex 17.12.2018 09:26

Я знаю, мы раздаем только дробовые ружья. Куда люди стремятся, это не наша проблема.

GhostCat 17.12.2018 09:27

У меня это не работает:> * Что пошло не так: не удалось выполнить задачу ': compileJava'. > недопустимый флаг: -source 1.3

Max von Hippel 17.12.2018 09:52

Но я могу сменить Бандеру, это хорошая идея. Я попробую завтра, если получится.

Max von Hippel 17.12.2018 09:53

Метод переименования исправил это. Спасибо.

Max von Hippel 17.12.2018 10:03

Другие вопросы по теме