2014-04-15 12 views
6

Ich bin mit scala 2.10 und 1.11 gradlescala Dateinamen zu lang

Mein Problem ist, dass die kompilierte jar einen Fehler fallen, wenn ich zum Laufen im hadoop Cluster versuchen. Ich möchte auf Hadoop laufen, weil ich Verbrühungen benutze.

Die Ausnahme ist:

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) 

Alle Kommentare sind willkommen ...

+1

Sind Sie mit auf einem verschlüsselten Dateisystem? Es hat mich schon früher und viele andere gebissen: https://groups.google.com/forum/#!topic/simple-build-tool/wtD6vgdiy6g –

+0

nein Ich lief in einem Docker-Container – user3537713

+0

Docker unterstützt nur bis zu 242 Byte lang Dateinamen (https://github.com/dotcloud/docker/issues/1413) und in Ihrem Fall ist der automatisch erzeugte Dateiname 252 Bytes lang. –

Antwort

7

-Xmax-classfile-name 200 den scalac Optionen Hinzufügen sollte das in Ordnung bringen.

Quellen:

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

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

+3

aber war das Problem nicht wegen 'Verbrühung' interner Klasse, die er nicht kontrollieren kann, während er seine eigenen Quellen kompiliert? nach all dem Fehler ging es um Verbrühung Klasse: 'com/twitter/bijec tion/GeneratedTupleCollectionInjections ...' – Jas

+0

Stimmen Sie mit was @Jas sagte. Die scalac-Optionen funktionieren nur für Ihre eigenen Klassen mit kürzeren Dateinamen. – maxjakob

+0

Um dies ein wenig zu erweitern, möchten Sie _reduce_ den max-classfile-name-Wert reduzieren, damit Sie unter Linux die volle Dateipfadgröße von 255 überschreiten können. – Azuaron