如何通过GroovyShell设置类路径?

时间:2017-11-17 14:53:03

标签: groovy classpath

关注磁盘设置

temp/
  Folder/
    myPackage/
        Person.groovy
  test.groovy
  script.groovy

'script.groovy'文件内容

import myPackage.Person

new Person()

'test.groovy'文件内容

def cl = new GroovyClassLoader(this.getClass().classLoader)
cl.addURL (new URL ('file://C:/temp/Folder'))

new GroovyShell(cl).evaluate (new File ('C:/temp/script.groovy'))

问题:

“groovy c:\ temp \ test.groovy”结果

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup 
failed:
C:\temp\script.groovy: 1: unable to resolve class myPackage.Person
 @ line 1, column 1.
   import myPackage.Person
   ^

1 error

但'groovy -cp C:\ temp \ Folder c:\ temp \ test.groovy'当然有效。

我的逻辑错误在哪里?不应该从添加的类路径中加载准备好的类加载器类Person?

此致 格特

1 个答案:

答案 0 :(得分:1)

尝试通过Jenkins执行Groovy文件时遇到类似的问题。

09:00:45 ERROR: startup failed:
09:00:45 automation_foodoo.groovy: 11: unable to resolve class com.foo.fooclass
09:00:45  @ line 11, column 1.
09:00:45    import com.foo.fooclass
09:00:45    ^
09:00:45 
09:00:45 1 error
09:00:45 
09:00:48 Finished: FAILURE

所采取的行动没有取得积极成果:

  • 在.bash_profile中设置CLASSPATH

    CLASSPATH=/Users/Shared/Jenkins/Home/workspace/JobName/src/main/groovy
    export CLASSPATH
    
  • 通过设置属性内容,通过“注入环境变量...”设置在Jenkins本身中设置类路径

    CLASSPATH=$CLASSPATH=/Users/Shared/Jenkins/Home/workspace/JobName/src/main/groovy
    
  • 通过具有ANY'import'语句的Groovy cli运行任何Groovy文件将返回相同的'无法解析类'

就像您在原始帖子中提到的那样,当我通过在cli中包含'-cp'设置来运行Groovy文件时,它运行良好。

我将自己添加到我的信息中,希望重新点燃这篇文章的热情,并找到一个找到答案的人:)