2014-04-15 42 views
6

我使用Scala的2.10和1.11的gradle斯卡拉文件名過長

我的問題是,當我嘗試在Hadoop集羣中運行編譯罐子下降錯誤。 我想在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

nope我在Docker容器中運行 – user3537713

+0

Docker只支持長達242字節文件名(https://github.com/dotcloud/docker/issues/1413),在你的情況下,自動生成的文件名長度爲252個字節。 –

回答

7

添加-Xmax-classfile-name 200到scalac選項應該解決這個問題。

來源:

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說。 scalac選項只適用於您自己的文件名較短的類。 – maxjakob

+0

爲了擴展這一點,您需要_reduce_ max-classfile-name值,以便您可以在Linux下滿足硬文件路徑大小限制的255條限制。 – Azuaron