Я компилирую 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, чтобы включить утверждения при компиляции моего проекта? Спасибо!
Я согласен с Андреасом. У вашего кода есть проблема, а не у градиента. Устраните реальную проблему вместо того, чтобы работать над симптомами. И нет, компиляция с уровнем java 1.3 ... это действительно очень плохая идея. Действительно.
Я смущен. Если вы компилируете с помощью -source 1.3
, т.е. моделируете старый код, в котором утверждений не существовало, почему вы пытаетесь бегать код с включенными утверждениями? Какой смысл включать утверждения, если код компилируется без них?
@Andreas Я не думаю, что компилировать с 1.3 особенно хорошая идея, я пробовал только потому, что сообщение об ошибке, казалось, предлагало мне это сделать. Я не очень разбираюсь в Gradle или Java и очень открыт для предложений.
@MaxvonHippel Значит, это важная часть сообщения об ошибке: «'assert' - ключевое слово и не может использоваться в качестве идентификатора», что означает, что вам нужно отредактировать исходный код и перестать использовать assert
в качестве имени метода.
Вы пробовали?
compileJava {
options.compilerArgs << '-source 1.3'
}
Я должен предупредить вас, что таким образом вы теряете все «современные» языковые функции (например, дженерики).
PS:
Правильным решением будет переименование метода assert
в класс Bandera
.
РЕДАКТИРОВАТЬ Правильный способ установки этого флага -
compileJava {
sourceCompatibility = 1.3
}
Метод переименования - лучший способ решить эту проблему.
Это не «предупреждение», а простое указание на отказ. Тем не менее, теоретически это решило бы проблему, так что голосуйте за творчество ;-)
@GhostCat да, но если OP этого хочет, что я могу сделать?
Я знаю, мы раздаем только дробовые ружья. Куда люди стремятся, это не наша проблема.
У меня это не работает:> * Что пошло не так: не удалось выполнить задачу ': compileJava'. > недопустимый флаг: -source 1.3
Но я могу сменить Бандеру, это хорошая идея. Я попробую завтра, если получится.
Метод переименования исправил это. Спасибо.
Нет, решение состоит в том, чтобы изменить исходный код, чтобы не использовать
assert
в качестве идентификатора.