【问题标题】:How to set a classpath via GroovyShell?如何通过 GroovyShell 设置类路径?
【发布时间】:2017-11-17 14:53:02
【问题描述】:

以下磁盘设置

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吗?

问候, 格特

【问题讨论】:

    标签: groovy classpath


    【解决方案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
      
    • 通过具有任何“导入”语句的 Groovy cli 运行任何 Groovy 文件都将返回相同的“无法解析类”

    正如您在原始帖子中提到的,当我通过在 cli 中包含“-cp”设置来运行 Groovy 文件时,它工作正常。

    我用我的信息将自己添加到这篇文章中,希望能重新点燃这篇文章的火,并找到已经解决这个问题的人:)

    【讨论】:

    • 有没有找到导入詹金斯管道的解决方案?对我来说很可笑,一个简单的个人 java 类是如此困难
    猜你喜欢
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2012-11-04
    • 2013-06-09
    相关资源
    最近更新 更多