1

JDK 1.7.0_40 で Groovy 2.1.7 を使用します。

私は非常に単純なプロトタイプ groovy スクリプトを作成しようとしています。RESTClient を呼び出して、サービスからの結果を処理します。

次のようになります。

#! env groovy
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.2' )
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1' )
import groovyx.net.http.RESTClient;
println("About to create RESTClient.");
service = new RESTClient("http://myhost/")
def diagnostics = service.get(path: "mypath");
println("diagnostics[" + diagnostics + "]");

これを実行すると、次のようになります。

About to create RESTClient.
Caught: java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
        at monitorStatus.run(monitorStatus.groovy:9)
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
        ... 1 more

メソッドに「@Grab」アノテーションを付ける必要があるという言及を見ました。メソッドのこれらの注釈を使用して、これのいくつかのバリエーションを試しましたが、違いはありませんでした。

ここで何が間違っていますか?

編集: "-Dgroovy.grape.report.downloads=true" を JAVA_OPTS に追加し、スクリプトに些細な変更を加えました。

URLとパスだけを変更した現在のスクリプトは次のとおりです。

#! /usr/bin/env groovy
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.2' )
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.2.5' )
import groovyx.net.http.RESTClient;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.methods.HttpUriRequest;
println("About to create RESTClient.");
service = new RESTClient("http:///")
def diagnostics = service.get(path: "mypath");
println("diagnostics[" + diagnostics + "]");

これを実行すると、次のようになります。

Resolving dependency: org.apache.httpcomponents#httpclient;4.2.5 {default=[default]}
Resolving dependency: org.codehaus.groovy.modules.http-builder#http-builder;0.5.2 {default=[default]}
Preparing to download artifact org.apache.httpcomponents#httpclient;4.2.5!httpclient.jar
Preparing to download artifact org.codehaus.groovy.modules.http-builder#http-builder;0.5.2!http-builder.jar
Preparing to download artifact org.apache.httpcomponents#httpcore;4.2.4!httpcore.jar
Preparing to download artifact commons-logging#commons-logging;1.1.1!commons-logging.jar
Preparing to download artifact commons-codec#commons-codec;1.6!commons-codec.jar
Preparing to download artifact net.sf.json-lib#json-lib;2.3!json-lib.jar
Preparing to download artifact org.codehaus.groovy#groovy;1.7.11!groovy.jar
Preparing to download artifact net.sourceforge.nekohtml#nekohtml;1.9.9!nekohtml.jar
Preparing to download artifact xml-resolver#xml-resolver;1.2!xml-resolver.jar
Preparing to download artifact commons-beanutils#commons-beanutils;1.8.0!commons-beanutils.jar
Preparing to download artifact commons-collections#commons-collections;3.2.1!commons-collections.jar
Preparing to download artifact commons-lang#commons-lang;2.4!commons-lang.jar
Preparing to download artifact net.sf.ezmorph#ezmorph;1.0.6!ezmorph.jar
Preparing to download artifact antlr#antlr;2.7.7!antlr.jar
Preparing to download artifact asm#asm;3.2!asm.jar
Preparing to download artifact asm#asm-commons;3.2!asm-commons.jar
Preparing to download artifact asm#asm-util;3.2!asm-util.jar
Preparing to download artifact asm#asm-analysis;3.2!asm-analysis.jar
Preparing to download artifact asm#asm-tree;3.2!asm-tree.jar
Preparing to download artifact xerces#xercesImpl;2.8.1!xercesImpl.jar
Preparing to download artifact xml-apis#xml-apis;1.3.03!xml-apis.jar
About to create RESTClient.
Caught: java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
        at monitorSunlightDataSourceStatus.run(monitorSunlightDataSourceStatus.groovy:10)
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
        ... 1 more

これは有用な手がかりを提供しますか?

4

2 に答える 2

3

~/.m2ディレクトリと も削除してみてください~/.groovy/grapes directory
それは私のために働いた。

于 2014-07-25T20:27:36.093 に答える
0

さて、私はこれを解決することができましたが、問題が何であったかはわかりません。groovy-user リストの誰かが、~/.groovy を削除して Groovy を再インストールすることを提案しました。最初に前者を単独で試してみたところ、スクリプトの実行が遅くなりましたが、それでも同じように失敗しました。その後、Groovy の再インストールと ~/.groovy の削除の両方を試みたところ、スクリプトは正常に実行されました。

于 2013-09-20T16:25:39.573 に答える