У нас есть тесты JUnit, написанные на Groovy, и большинство идентификаторов методов содержат точки. Это пример:
import org.junit.Assert
import org.junit.Test
class MethodNameTest {
@Test
void "test with ... dots "() {
Assert.assertTrue(false);
}
}
Это работало с использованием groovy 2.4.15 и JDK 8. Однако после обновления до JDK 11 у нас теперь есть ошибки «Недопустимое имя метода»:
Exception in thread "main" java.lang.ClassFormatError: Illegal method name "test with ... dots " in class MethodNameTest
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
Мы также пытались обновить groovy до 2.5.9, но все равно выдает эту ошибку. Есть ли способ исправить это при использовании jdk 11?
Мы читали, что символ точки отсутствует в списке допустимых java идентификаторов (согласно §3.8 ), но мы задаемся вопросом, почему groovy может поддерживать его в JDK 8, но не в JDK 11. Мы можем просто изменить тесты для адаптации, но мы будем благодарны, если кто-нибудь сможет объяснить, как и почему это происходит.
Спасибо!
edit Я запускаю тесты через Intellij IDEA. У нас есть проект gradle, который использует groovy в качестве зависимости.