文件名太长sbt

时间:2015-02-17 16:11:34

标签: 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

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

5 个答案:

答案 0 :(得分:54)

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

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

scalacOptions ++= Seq("-Xmax-classfile-name","78")

答案 1 :(得分:13)

这就是我解决问题的方法

mkdir /tmp/myproject-target
cd ~/workspace/myproject
rm -rf target
ln -s /tmp/myproject-target target

答案 2 :(得分:7)

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

-Xmax-classfile-name 78 

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

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

答案 3 :(得分:0)

尝试使用像这样的shell脚本:

#!/bin/sh

for file in *; do {
        echo -m "$file" | wc -m;
        echo "$file"
}
done

在src / main / scala目录中运行它应该显示哪些文件的名称超过254个字符。我希望这能回答你的问题。

答案 4 :(得分:0)

  • 设置文件长度限制可能不安全,我找不到任何官方文档证明此解决方案是安全的。
  • 使用未加密的目录是不安全的。

我想提供一种不同的方法:

  • 安装veracryptin ubuntu with apt
  • 创建一个非加密目录(在加密用户主目录之外)
  • 在新目录中创建一个veracrypt文件容器
  • 将容器装入
  • sbt工作正常,即使挂载点位于加密目录中)
  • 可以使用复杂密码创建容器并在登录时挂载

    veracrypt -t --pim = 0 --protect-hidden = no -k“” - p $ PASSWORD $ ENCRYPTED_CONTAINER $ MOUNT_DIR