Groovy:无法解析课程

Gle*_*len 5 groovy jenkins

当我通过命令行或Jenkins运行Groovy脚本时,出现“无法解析类”错误。

我在C:\ Users \ myuser \ git \ productname \ mycompany-build \ src \ main \ groovy \ com \ mycompany \ build的同一文件夹中有以下2个groovy文件

Foo.groovy

package com.mycompany.build

class Foo {

  Foo() {
  }

  public void runBar() {
    Bar bar = new Bar();
    bar.name = "my name";
    System.out.println(bar.name);
  }

  static void main(String[] args) {
    Foo foo = new Foo();
    foo.runBar()
  }
}
Run Code Online (Sandbox Code Playgroud)

常规

package com.mycompany.build

class Bar {
  String name;
}
Run Code Online (Sandbox Code Playgroud)

我使用命令行运行Foo.groovy。

运行Groovy时,我位于以下目录中:

C:\Users\myuser\git\productname\mycompany-build\src\main\groovy\com\mycompany\build
Run Code Online (Sandbox Code Playgroud)

这是我在命令行(cmd)上输入的内容:

C:/java/tools/groovy-2.4.11/bin/groovy -cp C:/Users/myuser/git/myproject/mycompany-build/src/main/groovy/com/mycompany/build Foo.groovy
Run Code Online (Sandbox Code Playgroud)

在无法找到类“ Bar”的地方得到以下信息,但Bar.groovy文件与Foo.groovy位于同一目录中,更不用说我也指定了-cp了。

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
C:\Users\myuser\git\myproject\mycompany-build\src\main\groovy\com\mycompany\build\Foo.groovy: 9: unable to resolve class Bar
 @ line 9, column 9.
       Bar bar = new Bar();
           ^

C:\Users\myuser\git\myproject\mycompany-build\src\main\groovy\com\mycompany\build\Foo.groovy: 9: unable to resolve class Bar
 @ line 9, column 15.
       Bar bar = new Bar();
                 ^

2 errors
Run Code Online (Sandbox Code Playgroud)

您能建议我如何从命令行运行它吗?

一旦能够运行它,我计划在Jenkins工作中运行它。我开始尝试在Jenkins作业中运行此程序,但遇到了同样的问题,导致我开始首先在命令行中运行它。

我确实尝试过使用正斜杠和反斜杠进行此操作,但是在性能上没有任何区别。

dag*_*ett 8

您在类路径和包使用方面的问题。

让它工作

1.如果您的类在包中声明,com.mycompany.build则 groovy/java 将在与com/mycompany/build类路径相关的文件夹中查找它。所以你需要从你的类路径中排除包文件夹:

groovy -cp C:\Users\myuser\git\productname\mycompany-build\src\main\groovy Foo.groovy
Run Code Online (Sandbox Code Playgroud)

2.您可以删除两个类中的包声明。在这种情况下,groovy/java 将在您的类路径中查找没有包文件夹前缀的类:C:\Users\myuser\git\productname\mycompany-build\src\main\groovy\com\mycompany\build并且您的命令应该可以工作。如果您当前的文件夹是带有 groovy 类的文件夹,那么命令可能会更简单:

groovy -cp . Foo.groovy
Run Code Online (Sandbox Code Playgroud)