Я начинаю программировать с groovy, и я хотел знать, когда я использую GroovyShell (новый файл («script. groovy»). Txt) .evaluate (), видят ли классы сценариев зависимости в classpath или нет, я пробую этот пример, и он генерирует следующие ошибки.
// main.groovy
@Grapes([
@Grab(group='org.slf4j', module='slf4j-api', version='1.6.1'),
@Grab(group='ch.qos.logback', module='logback-classic', version='0.9.28')
])
import groovy.lang.GroovyShell;
import java.io.File;
new GroovyShell().evaluate(new File("C:\\Users\\Dev\\Desktop\\logger.groovy").text);
// logger.groovy
import org.slf4j.*
import groovy.util.logging.Slf4j
@Slf4j
class HelloWorldSlf4j {
def execute() {
log.debug 'Execute HelloWorld.'
log.info 'Simple sample to show log field is injected.'
}
}
def helloWorld = new HelloWorldSlf4j()
helloWorld.execute()
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:869)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:979)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:967)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.codehaus.groovy.transform.LogASTTransformation$AbstractLoggingStrategy.classNode(LogASTTransformation.java:346)
... 38 more