2014-04-15 11 views
6

मैं स्केला 2.10 और Gradle 1.11स्केला फ़ाइल नाम बहुत बड़ा

मेरे समस्या का उपयोग कर रहा है कि संकलित जार एक त्रुटि ड्रॉप जब मैं Hadoop क्लस्टर में चल करने की कोशिश है। मैं हडूप पर दौड़ना चाहता हूं क्योंकि मैं स्केलिंग का उपयोग कर रहा हूं।

अपवाद है:

Exception in thread "main" java.io.FileNotFoundException: 
/tmp/hadoop-root/hadoop-unjar6538587701808097105/com/twitter/bijec 
tion/GeneratedTupleCollectionInjections$$anon$31$$anonfun$invert$10$$anon 
fun$apply$46$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49$$anonfu 
n$apply$50$$anonfun$apply$51$$anonfun$apply$52$$anonfun$apply$53$$anonfun$app 
ly$54$$anonfun$apply$55.class (File name too long) 

किसी भी टिप्पणी का स्वागत है ...

+1

आप एक एन्क्रिप्टेड फाइल सिस्टम पर चल रहे हैं? यह मुझे पहले और कई अन्य लोगों के साथ भी थोड़ा सा है: https://groups.google.com/forum/#!topic/simple-build-tool/wtD6vgdiy6g –

+0

नहीं, मैं एक डॉकर कंटेनर – user3537713

+0

में चल रहा हूं डॉकर केवल 242 बाइट तक का समर्थन करता है फ़ाइल नाम (https://github.com/dotcloud/docker/issues/1413) और आपके मामले में स्वत: जेनरेट की गई फ़ाइल का नाम 252 बाइट लंबा है। –

उत्तर

7

scalac विकल्प के लिए -Xmax-classfile-name 200 जोड़ा जा रहा है कि ठीक करना चाहिए।

सूत्रों का कहना है:

https://issues.scala-lang.org/browse/SI-3623

https://groups.google.com/forum/#!topic/simple-build-tool/wtD6vgdiy6g

+3

लेकिन क्या समस्या नहीं है क्योंकि 'स्काल्डिंग' आंतरिक वर्ग जिसका अपना स्वयं का स्रोत संकलित करते समय कोई नियंत्रण नहीं है? सभी त्रुटि वर्ग के बारे में सोचने के बाद: 'com/twitter/bijec tion/GeneratedTupleCollectionInjections ... ' – Jas

+0

@Jas के साथ सहमत हैं। स्केलेक विकल्प केवल आपके स्वयं के वर्गों के लिए काम करते हैं जिनमें छोटे फ़ाइल नाम होते हैं। – maxjakob

+0

इस पर विस्तार करने के लिए, आप max-classfile-name मान _reduce_ करना चाहते हैं ताकि आप लिनक्स में हार्ड 255 पूर्ण फ़ाइल पथ आकार सीमा के नीचे छेड़छाड़ कर सकें। – Azuaron

संबंधित मुद्दे