Как устранить ошибку Groovy «невозможно разрешить класс spock.lang.Specification»? - PullRequest
0 голосов
/ 08 декабря 2018

Я использую Ubuntu Linux 16, Gradle 2.10, Groovy 2.4.5 и Java версии 9. Я бы хотел удалить Gradle, если он мне не нужен.Я пытаюсь запустить эту программу здесь с GitHub .

Вот текст кода:

package timezra.groovy.trampoline_memoize

import spock.lang.Specification

class RecursiveMemoizationSpec extends Specification {

    int count

    def fib = { n ->
        count++
        if(n == 0) 0
        else if(n == 1) 1
        else fib.call(n-1) + fib.call(n-2)
    }.memoize()

    def "calls should be cached"() {
        when:
        def actual = fib 10

        then:
        actual == 55
        count == 11
        // count == 177 //unmemoized
    }
}

Когда я запускаю ее с

groovy RecursiveMemoizationSpec.groovy

Я получаю эту ошибку:

/ groovy-trampoline-memoize-specs / src / test / groovy / timezra / groovy /trampoline_memoize / RecursiveMemoizationSpec.groovy: 3: невозможно разрешить класс spock.lang.Specification @ строка 3, столбец 1. import spock.lang.Specification ^

1 ошибка

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

1 Ответ

0 голосов
/ 09 декабря 2018

Это очень старый проект, и похоже, что его не трогали за 7 лет.Вы не должны отказываться от gradle, но должны научиться им пользоваться.проверив файл сборки, вы увидите, что он добавляет зависимости Groovy (1.8.3) и spoc.Поскольку в этом проекте нет оболочки Gradle, я бы использовал sdkman для загрузки и установки gradle:

https://sdkman.io/install

Затем я просто запустил бы тест gradle из корня проекта.

Другая проблема, с которой вы можете столкнуться, это то, что вы работаете с Java 9. Groovy 1.8.3, вероятно, не будет работать на Java 9. Я знаю, что Groovy работал над совместимостью с groovy 9+, в 2.5.x версия, и будет добавлена ​​поддержка синтаксиса в 3.0.Таким образом, вы можете либо обновить файл сборки, чтобы использовать версию Groovy, не использующую версию, либо перейти на Java 8. Если вы установите sdkman, это также даст вам простой способ управления и переключения версии Java на лету.

Если вы все еще действительно хотите избавиться от gradle, вам придется использовать аннотации Groovy @Grab, которые будут включать зависимости, подобные gradle:

http://docs.groovy -lang.org / latest / html / Documentation / grape.html

Но я бы порекомендовал вам познакомиться с Gradle, потому что это мощная система сборки.

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