2009-05-28 16 views
12

से किसी पैकेज में ग्रोवी क्लास निष्पादित करें क्या जावा के साथ, डॉट्स के साथ पैकेज निर्दिष्ट करके ग्रोवी क्लास निष्पादित करने का कोई तरीका है?कमांड लाइन

उदाहरण: फ़ाइल ./my/package/MyClass.groovy:

package my.package 

class MyClass { 
    static void main(String[] args) { 
    println "ok" 
    } 
} 
 
> cd my/package 
my/package> groovy MyClass 
ok 
> cd ../.. 
> groovy my/package/MyClass.groovy 
ok 
> groovy my/package/MyClass 
ok 
> groovy my.package.MyClass 
Caught: java.io.FileNotFoundException: my.package.MyClass 

मैं पिछले आदेश काम करने के लिए उम्मीद कर रहा था। मैंने क्लासपाथ स्थापित करने के विभिन्न तरीकों की कोशिश की, इसका कोई फायदा नहीं हुआ।

उत्तर

14

सबसे पहले, पैकेज एक आरक्षित कीवर्ड है, इसलिए आप इसे पैकेज नाम के रूप में उपयोग नहीं कर सकते हैं।

दूसरा, आप ग्रोवी में ऐसा नहीं कर सकते हैं, क्योंकि स्क्रिप्ट के लिए नहीं, कक्षाओं के लिए डॉट नोटेशन का उपयोग किया जाता है, इसलिए आपको इसका उपयोग करने के लिए एक संकलित कक्षा फ़ाइल की आवश्यकता होती है।

फिर भी, आप जावा + classpath साथ ग्रूवी आदेश की जगह ले सकता:

java -cp /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar:. my.some.MyClass

आप उदाहरण के लिए 'g_java' यह करने के लिए एक उपनाम जोड़ सकते हैं यह कम वर्बोज़ बनाने के लिए।

+0

यह सही उत्तर की तरह लगता है, लेकिन यह काम नहीं कर रहा है। मैंने उदाहरण के रूप में "my.package" का उपयोग किया, वैसे-एक बुरा जिसे मैं महसूस करता हूं। वैसे भी, एक स्वीकार्य पैकेज नाम के साथ, और groovyc के साथ संकलन के बाद, यह काम नहीं करता है। groovyc my/some/MyClass.groovy निर्यात CLASSPATH =। ls मेरी/कुछ/MyClass.class मेरी/कुछ/MyClass.class ग्रूवी my.some.MyClass पकड़ा: java.io.FileNotFoundException: /Users/olivier/my.some.MyClass (/ उपयोगकर्ताओं/ओलिवर/my.some.MyClass) ? –

+0

आप सही हैं, मुझे नहीं पता कि मुझे यह कैसे याद आया। यदि आपको थोड़ा धोखा देने की कोई बात नहीं है, तो आप जावा + क्लासपाथ के साथ ग्रोवी कमांड को प्रतिस्थापित कर सकते हैं: जावा-सीपी /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar:। my.some.MyClass उदाहरण के लिए आप इसे 'g_java' में उपनाम जोड़ सकते हैं ताकि इसे कम वर्बोज़ बनाया जा सके। –

+0

धन्यवाद। यह काम करता हैं। तो, मेरे मूल प्रश्न का उत्तर यह है: नहीं, यह ग्रोवी में इस तरह से काम नहीं करता है। आपको जावैक और जावा का उपयोग करना होगा। –