2016-07-07 2 views
0

Как попытка, я создал простой класс groovy в eclipse и написал простой метод проверки спота. Я создал один объект с @Shared аннотаций и затмение жалуются, как:Получение ошибки в eclipse для аннотации @Shared от spock

Multiple markers at this line 
- Groovy:unable to resolve class Shared , unable to find class 
for annotation 
- Groovy:class Shared is not an annotation in @Shared 

Я гугл немного, но не нашел решения. Кто-нибудь знает, почему эта ошибка происходит? Ниже приведен пример кода:

class SimpleSpockTestExampleSpec extends Specification { 

    @Shared 
    MyObject obj; 

    def "length of Spock's and his friends' names"() 
    { 
     expect:"Replaces when-then block" 
     name.size() == length 

     where: 
     name << ["zzzzz","xxx","yyy"] 
     length << [5,6,7] 
    }  
} 

enter image description here

Пиз игнорировать номера строк в изображении.

+0

Вы импортировали аннотацию? Это должно быть 'spock.lang.Shared'. – Opal

+0

@ Опал, спасибо. Работает сейчас. Для java в eclipse есть предложения по импорту пакетов, если указатель мыши помещен в ошибку. Но для хороших он ничего не показывал. Поэтому я не мог думать, что это связано с проблемой импорта. –

+0

Итак, добавив ответ. Пожалуйста примите. – Opal

ответ

1

Кажется, что вы не импортировали соответствующий пакет. У вас есть следующая операция в коде:

import spock.lang.Shared 

?

+0

Учитывая, что вам нужно выбирать индивидуальный импорт, я не вижу недостатка в простом трюке старого импорта: 'import spock.lang. *' – MarkHu

+0

@MarkHu, в основном IDE, дающий правильное предложение, когда дело доходит до импортных заявлений. Не имеет значения (и что конкретно) использовать звезду над человеком? – Opal

+0

Единственное различие, которое я вижу, - это точно точка вопроса OP: «Я знаю, что эта библиотека имеет эту функцию, так почему я получаю ошибки ...?» Не заставляйте меня говорить о культуре Java чрезмерно глубокой/редкой иерархии. – MarkHu