文件名太长sbt

Chr*_*art 29 scala sbt

我收到一个错误,说我的文件太长了.

 [info] Compiling 29 Scala sources to /home/chris/dev/suredbits-core/target/scala-2.11/classes...
    [error] File name too long
    [error] one error found
    [error] (compile:compile) Compilation failed
    [error] Total time: 7 s, completed Feb 17, 2015 8:10:25 AM
Run Code Online (Sandbox Code Playgroud)

如何找出哪个文件太长,以便缩短文件名?我添加了编译器标志-Xmax-classfile-name并将其设置为254.

Bre*_*ett 55

如果您/home是加密文件系统(例如LUKS),则可能会遇到此问题.

设置max-classfile-name为254是默认值(或者可能是255) - 因此您不会减少太多.您可能应该考虑更接近70 - 100的最大长度.您可以通过~/.sbt/0.13/local.sbt使用scalac覆盖创建所有项目的设置:

scalacOptions ++= Seq("-Xmax-classfile-name","78")
Run Code Online (Sandbox Code Playgroud)

  • 有这个问题在docker容器内编译.修好了.谢谢! (7认同)
  • 嗨布雷特.我也使用了你的解决方案,它的工作时间非常短.但遗憾的是,光滑3.0.0的com.typesafe.slick依赖包含一个文件,它的jar文件长度为73个符号(包括jar中的路径).结果是一个非常奇怪的NoClassDefFoundError出现.我将你的建议中的72改为现在的100,但这不是一个好的解决方案. (4认同)
  • 你是一个救生员 (3认同)
  • `scalacOptions ++ = Seq(" - Xmax-classfile-name","128")`为我工作 (3认同)

Chr*_*art 13

这就是我解决问题的方法

mkdir /tmp/myproject-target
cd ~/workspace/myproject
rm -rf target
ln -s /tmp/myproject-target target
Run Code Online (Sandbox Code Playgroud)

  • 这样做的缺点是编译器输出(容易可逆)不再驻留在加密文件系统上。 (2认同)

小智 7

我在IntelliJ Ultimate 2016.1.2(类似于Intellij 14)中遇到了这个问题.我通过设置解决了它:

-Xmax-classfile-name 78 
Run Code Online (Sandbox Code Playgroud)

文件>设置...>构建,执行,部署>编译器> Scala编译器>其他编译器选项中.

注意:选项名称及其值("78")之间有一个空格,而不是等号.