2014-10-20 3 views
8

को हल करने में असमर्थ मैं भूगर्भ-ग्रोवी नामक एक स्क्रिप्टिंग पैकेज के लिए ग्रोवी सीख रहा हूं। मैं ग्रूवी बाकी ट्यूटोरियल here पीछा किया और निम्नलिखित कोड का परीक्षण किया:ग्रोवी: वर्ग groovyx.net.http.RESTClient

import groovyx.net.http.RESTClient 

def client = new RESTClient('http://www.acme.com/') 
def resp = client.get(path : 'products/3322') // ACME boomerang 

हालांकि, मैं कह रहा import बयान पर एक त्रुटि मिली:

Groovy:unable to resolve class groovyx.net.http.RESTClient 

मैं चारों ओर खोज की है, और वहाँ कई सवाल और जवाब हैं इस त्रुटि संदेश के लिए, उदाहरण के लिए, import groovyx.net.http.RESTClient in Groovy class, और RestClient Grails Import fails। हालांकि, वे सभी grails के लिए, जो मैं उपयोग नहीं करता और बहुत परिचित नहीं हूँ।

मेरा प्रश्न

है मैं इस त्रुटि को कैसे ठीक करना चाहिए अगर मैं केवल ग्रूवी है? (ग्रूवी का मेरा संस्करण निम्नलिखित आदेशों के साथ उबंटू 12.04 के तहत स्थापित है)।

sudo apt-add-repository ppa:groovy-dev/groovy 
sudo apt-get update 
sudo apt-get install groovy 

धन्यवाद।

- संपादित करें ---

मैं @Grab बयान के रूप में सुझाव जोड़ा, और इस प्रकार एक दो लाइन rest1.groovy फ़ाइल डाल:

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7') 
import groovyx.net.http.RESTClient 

groovyConsole rest1.groovy ठीक से चलाने के लिए लगता है। लेकिन groovysh < rest1.groovy अभी भी मुझे एक त्रुटि दे रहा है (जैसा कि नीचे दिखाया गया है)। मुझे लगता है कि मुझे इस दौड़ को groovysh में पर्यावरण के समान होना चाहिए क्योंकि पृष्ठभूमि में groovy स्क्रिप्ट पृष्ठभूमि में वेब सेवा के रूप में बुलाया जाता है। @Grab लाइन के बिना, सेवा एक अपवाद उत्पन्न करता है। @Grab लाइन के साथ, सेवा भी पंजीकृत नहीं होगी। प्रति स्क्रिप्ट हड़पने की तुलना में groovyx.net.http.RESTClient के लिए आवश्यक निर्भरताओं को शामिल करने का एक और स्थायी तरीका है (उदा। apt-get या किसी चीज़ की मैन्युअल प्रतिलिपि)?

groovysh < rest1.groovy 
Groovy Shell (1.8.6, JVM: 1.7.0_72) 
Type 'help' or '\h' for help. 
------------------------------------------------------------------------------- 
groovy:000> @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7') 
groovy:001> import groovyx.net.http.RESTClient 
ERROR org.codehaus.groovy.tools.shell.CommandException: 
Invalid import definition: 'import groovyx.net.http.RESTClient'; reason: startup failed: 
script1413902882282760571375.groovy: 1: unable to resolve class groovyx.net.http.RESTClient 
@ line 1, column 1. 
    import groovyx.net.http.RESTClient 
+0

क्या आप अपने क्लासपाथ में http-builder शामिल हैं? इस उदाहरण को देखें। http://groovy.codehaus.org/modules/http-builder/doc/rest।एचटीएमएल – Raphael

उत्तर

12

आप शायद अभी ठीक से सुनिश्चित करें कि आपके ग्रूवी स्क्रिप्ट जार आप classpath में की जरूरत है बनाने के लिए अंगूर लाइन की जरूरत है। अपनी स्क्रिप्ट के शीर्ष पर इस रखो:

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7') 

ध्यान दें, मैं अपनी स्क्रिप्ट के बाकी नहीं देख सकते हैं, इसलिए वहाँ अन्य मॉड्यूल तुम भी ले लो करने की आवश्यकता हो सकती है। अधिक संभावनाएं के लिए यहाँ देखें: http://groovy.codehaus.org/modules/http-builder/doc/rest.html

संपादित

ठीक है, खुशी है कि यह अब जिस तरह का हिस्सा काम करता है। जहां तक ​​groovysh चला जाता है, मुझे groovysh गतिशील रूप से आश्रित पुस्तकालय प्राप्त करने के तरीके के बारे में पता नहीं है, तो आपको वास्तव में क्या करने की ज़रूरत है, स्क्रिप्ट इंस्टॉल के हिस्से के रूप में, आपको जार को एक निर्देशिका में भी रखना चाहिए (कॉल groovysh -cp ./lib < script.groovy इस से: जार आप उपलब्ध होना चाहिए चाहते Maven के माध्यम से का उपयोग कर http://groovy.codehaus.org/Groovy+Shell

यह "lib" या कुछ इस तरह के), और फिर तर्क अपने groovysh कॉल करने के लिए जोड़ @Grab लाइन से artifact विनिर्देश।

+1

सुझाव के लिए धन्यवाद। यह 'groovyConsole' के लिए काम किया लेकिन' groovysh' के लिए नहीं। कृपया मेरा संपादन देखें। – tinlyx