2017-07-13 3 views
1

コマンドラインまたはJenkinsを使用してGroovyスクリプトを実行すると、「クラスを解決できません」というエラーが表示されます。Groovy:クラスを解決できません

私は同じフォルダ内に以下の2つのグルーヴィーなファイルがCである:\ユーザー\ myuserの\ gitの\ PRODUCTNAME \ mycompanyのビルドは\ SRC \メイン\グルーヴィー\ COM \ MyCompanyの\構築

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() 
    } 
} 

Bar.groovy

package com.mycompany.build 

class Bar { 
    String name; 
} 

私は、コマンドラインを使用してFoo.groovy実行します。

私はGroovyのを実行すると、私は次のディレクトリ内に位置しています:私はどこにそれを次取得

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 

C:\Users\myuser\git\productname\mycompany-build\src\main\groovy\com\mycompany\build 

これは私がコマンドラインで(CMD)を入力するものですクラス "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 

これをコマンドラインから実行する方法についてアドバイスできますか?

これを実行できるようになると、これをJenkinsジョブで実行する予定です。私はJenkinsの仕事の中でこれを実行しようと試み始めましたが、同じ問題を抱えていました。最初にコマンドラインから実行してみるようになりました。

私はこれを前方スラッシュとバックスラッシュで試みましたが、動作に違いはありませんでした。

答えて

1

あなたの問題とは対照的に、クラスproductnameで、すなわち1を含むディレクトリにクラスパス引数を設定する必要があると思います。

あなたのクラスがパッケージcom.mycompany.buildで宣言された場合、それは

1.を働く取得するには、その後のGroovy/Javaはクラスパスにフォルダcom/mycompany/build relatveでそれを探します。

groovy -cp C:\Users\myuser\git\productname\mycompany-build\src\main\groovy Foo.groovy 

2.あなたは両方のクラスにパッケージ宣言を削除することができますので、あなたのクラスパスからパッケージフォルダを除外する必要があります。この場合groovy/javaはクラスパスにパッケージフォルダプレフィックスがないクラスを探します:C:\Users\myuser\git\productname\mycompany-build\src\main\groovy\com\mycompany\buildあなたのコマンドは動作するはずです。 そして、あなたの現在のフォルダがGroovyクラスとフォルダの場合は、コマンドが簡単かもしれない:

groovy -cp . Foo.groovy 
0

私はあなただけのクラスパスとパッケージの使用量のmyproject

C:/java/tools/groovy-2.4.11/bin/groovy -cp C:\Users\myuser\git\productname\mycompany-build\src\main\groovy\com\mycompany\build Foo.groovy 
0

docsによると、クラスパスにあなただけのの.jar、.zipファイルを持つことができます。クラスファイル。それはの.javaファイルではなく、コンパイル Javaクラス(.classファイル)であるため、クラスバーはresolcedすることはできません。

私のために、次の作品:

C:/java/tools/groovy-2.4.11/bin/groovyc Bar.groovy 
C:/java/tools/groovy-2.4.11/bin/groovy Foo.groovy 
my name 

はまたBar.classFoo.groovyと同じフォルダにあるため、あなたはクラスパスを指定する必要はありませんので注意してください。

関連する問題