文件名太长sbt
Filename too long sbt
我收到一条错误消息,提示我在 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.
尝试使用这样的 shell 脚本:
#!/bin/sh
for file in *; do {
echo -m "$file" | wc -m;
echo "$file"
}
done
运行 在您的 src/main/scala 目录中应该会显示哪些文件的名称超过 254 个字符。我希望这能回答你的问题。
这就是我解决问题的方法
mkdir /tmp/myproject-target
cd ~/workspace/myproject
rm -rf target
ln -s /tmp/myproject-target target
如果您的 /home
是一个加密文件系统(例如 LUKS),您可能 运行 遇到这个问题。
将 max-classfile-name
设置为 254 是默认值(或者它可能是 255)- 因此您不会将其减少太多。您可能应该考虑接近 70 - 100 的最大长度。您可以通过使用 scalac 覆盖创建 ~/.sbt/0.13/local.sbt
来为所有项目设置它:
scalacOptions ++= Seq("-Xmax-classfile-name","78")
我在 IntelliJ Ultimate 2016.1.2(类似于 Intellij 14)中遇到了这个问题。我通过设置解决了它:
-Xmax-classfile-name 78
在文件>设置...>构建、执行、部署>编译器>Scala编译器>附加编译器选项。
注意:选项名称及其值(“78”)之间有一个space,而不是等号。
- 设置文件长度限制可能不安全,我找不到任何官方文档证明此解决方案是安全的。
- 使用未加密的目录不安全。
我想提供一种不同的方法:
- 安装veracrypt (in ubuntu with apt)
- 创建一个非加密目录(在加密的用户主目录之外)
- 在新目录中创建一个 veracrypt 文件容器
- 在
中安装容器
- 即使挂载点在加密目录中,sbt 也能正常工作)
可以使用复杂密码创建容器并在登录时挂载
veracrypt -t --pim=0 --protect-hidden=no -k "" -p $PASSWORD $ENCRYPTED_CONTAINER $MOUNT_DIR
我收到一条错误消息,提示我在 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.
尝试使用这样的 shell 脚本:
#!/bin/sh
for file in *; do {
echo -m "$file" | wc -m;
echo "$file"
}
done
运行 在您的 src/main/scala 目录中应该会显示哪些文件的名称超过 254 个字符。我希望这能回答你的问题。
这就是我解决问题的方法
mkdir /tmp/myproject-target
cd ~/workspace/myproject
rm -rf target
ln -s /tmp/myproject-target target
如果您的 /home
是一个加密文件系统(例如 LUKS),您可能 运行 遇到这个问题。
将 max-classfile-name
设置为 254 是默认值(或者它可能是 255)- 因此您不会将其减少太多。您可能应该考虑接近 70 - 100 的最大长度。您可以通过使用 scalac 覆盖创建 ~/.sbt/0.13/local.sbt
来为所有项目设置它:
scalacOptions ++= Seq("-Xmax-classfile-name","78")
我在 IntelliJ Ultimate 2016.1.2(类似于 Intellij 14)中遇到了这个问题。我通过设置解决了它:
-Xmax-classfile-name 78
在文件>设置...>构建、执行、部署>编译器>Scala编译器>附加编译器选项。
注意:选项名称及其值(“78”)之间有一个space,而不是等号。
- 设置文件长度限制可能不安全,我找不到任何官方文档证明此解决方案是安全的。
- 使用未加密的目录不安全。
我想提供一种不同的方法:
- 安装veracrypt (in ubuntu with apt)
- 创建一个非加密目录(在加密的用户主目录之外)
- 在新目录中创建一个 veracrypt 文件容器
- 在 中安装容器
- 即使挂载点在加密目录中,sbt 也能正常工作)
可以使用复杂密码创建容器并在登录时挂载
veracrypt -t --pim=0 --protect-hidden=no -k "" -p $PASSWORD $ENCRYPTED_CONTAINER $MOUNT_DIR