2016-11-18 4 views
8

का उपयोग करते समय पकड़ने के लिए कोई उपयुक्त क्लासलोडर नहीं मिला है, मैं groovy.sql.SQL का उपयोग करने वाली वैश्विक फ़ंक्शन स्क्रिप्ट लिखने का प्रयास कर रहा हूं।@GrabConfig

एनोटेशन @GrabConfig(systemClassLoader=true) जोड़ते समय मुझे जेनकिन्सफाइल में वैश्विक फ़ंक्शन का उपयोग करते समय अपवाद मिलता है।

hudson.remoting.ProxyException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
General error during conversion: No suitable ClassLoader found for grab 

यहाँ मेरी कोड है::

यहाँ अपवाद नहीं है

@GrabResolver(name='nexus', root='http://internal.repo.com') 
@GrabConfig(systemClassLoader=true) 
@Grab('com.microsoft.sqlserver:sqljdbc4:4.0') 
import groovy.sql.Sql 
import com.microsoft.sqlserver.jdbc.SQLServerDriver 

def call(name) { 
    echo "Hello world, ${name}" 

    Sql.newInstance("jdbc:sqlserver://ipaddress/dbname", "username","password", "com.microsoft.sqlserver.jdbc.SQLServerDriver") 
    // sql.execute "select count(*) from TableName" 
} 
+0

क्या आपने इसे हल करने में कामयाब रहे हैं? एक ही मुद्दे का अनुभव करें – StasKolodyuk

उत्तर

0

के रूप में समझाया here, पाइपलाइन "स्क्रिप्ट" नहीं सरल ग्रूवी लिपियों रहे हैं, वे भारी चल रहा है, कुछ करने से पहले बदल रहे हैं मास्टर पर भागों, दासों पर कुछ हिस्सों, उनके राज्य (परिवर्तनीय मूल्य) धारावाहिक के साथ और अगले चरण में पारित किया। इस प्रकार, हर ग्रोवी सुविधा समर्थित नहीं है।

मुझे @Grab समर्थन के बारे में निश्चित नहीं है। इस पर JENKINS-26192 में चर्चा की गई है (जिसे हल के रूप में घोषित किया गया है, तो शायद यह अब काम करता है)।

आप शारीरिक रूप से एक गुलाम पर चल अप्रतिबंधित ग्रूवी के साथ कुछ जटिल या महंगा कार्य करने के लिए जरूरत है, यह सबसे सरल हो सकता है और सबसे बस लिखने के लिए प्रभावी है कि कोड:

एक बहुत ही दिलचस्प comment से निकालें में एक * .groovy फ़ाइल में आपके कार्यक्षेत्र (उदाहरण के लिए, एक एससीएम चेकआउट में) और फिर बाहरी प्रक्रिया के रूप में ग्रोवी को चलाने के लिए टूल और sh/bat का उपयोग करें; या इस सामग्री को को ग्रैडल स्क्रिप्ट में भी डाल दें, ग्रोवी मैवेन प्लगइन निष्पादन इत्यादि। वर्कफ़्लो स्क्रिप्ट स्वयं को सरल और बेहद हल्के वजन तक सीमित होना चाहिए लॉजिकल ऑपरेशंस के समग्र प्रवाह को ऑर्केस्ट्रेट करने पर केंद्रित है और अन्य जेनकिंस सुविधाओं के साथ बातचीत कर रहा है- गुलाम आवंटन, उपयोगकर्ता इनपुट, और पसंद है।

संक्षेप में, आपको लगता है कि एक बाहरी स्क्रिप्ट को एसक्यूएल की जरूरत है कि कस्टम भाग ले जाएँ और निष्पादित कि एक अलग प्रक्रिया (आपके पाइपलाइन स्क्रिप्ट से ही कॉल) में कर सकते हैं, कि काम करना चाहिए। लेकिन पाइपलाइन स्क्रिप्ट में ऐसा करना स्वयं अधिक जटिल है।

0

सुनिश्चित करें कि "ग्रोवी सैंडबॉक्स का उपयोग करें" चेकबॉक्स अनचाहे है (यह पाइपलाइन स्क्रिप्ट टेक्स्ट बॉक्स के नीचे है)।