Groovy имен методов (java .lang.ClassFormatError: Недопустимое имя метода) - PullRequest
1 голос
/ 28 января 2020

У нас есть тесты 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 в качестве зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...