Как импортировать классы в groovy?

#java #groovy #import #classpath

#java #groovy #импорт #путь к классам

Вопрос:

Я нашел много ответов на эту тему, но все еще в замешательстве…

Чего я хочу достичь:

в /groovy/com/a/package/A.groovy

 package com.a.package

class A{
    public A(){}
    ...
}
 

в /another/folder/of/the/server/executableScript.groovy

 import com.a.package.A

def a = new A()
 

Если я не пропустил что-то очень простое, это должно сработать, если класс находится на пути к классу. Это должно работать даже в том случае, если расширение файла .class вместо .groovy . Когда я пытаюсь:

 /* gives me 'unable to resolve class'
import com.a.package.A

def a = new A()
*/
def cl = (URLClassLoader) this.class.getClassLoader()

for(URL url : cl.getURLs()){
    println url.toString()
}
 

Он возвращает мне длинный список URL-адресов, где мое значение является одним из значений в качестве разрешенного пути. Я что-то пропустил?

Комментарии:

1. Скорее всего, ваш class A на самом деле не компилируется и не добавляется в classpath. Покажите свой файл управления сборкой.

2. Бьюсь об заклад, вы не добавили /groovy папку в classpath.

3. дело не в импорте (на самом деле НИЧЕГО не «импортируется»), а в беспорядке в вашем пути к классу

4. Это правда, @daggett, я не добавлял /groovy явно. В целях тестирования я добавил соответствующий путь к файлу, вот так E:/groovy/com/a/package/A.groovy . @chrylis -осторожно оптимистично, если он не будет добавлен в classpath, разве это не означает, что он не должен отображаться при печати URL-адресов classpath?

5. import com.a.package.A это команда для поиска файла com/a/package/A с расширением class или groovy в папках или банках, перечисленных в classpath. Итак, вы должны добавить папку e:/groovy в classpath