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
これは有用な手がかりを提供しますか?