#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