Scala 文件名太长sbt
我收到一个错误,说我有一个文件在sbt中太长Scala 文件名太长sbt,scala,sbt,Scala,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 tim
[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”)之间有空格,不是等号。- 设置文件长度限制可能不安全,我找不到任何官方文档证明此解决方案是安全的
- 使用未加密的目录是不安全的
- 安装()
- 创建非加密目录(在加密用户主目录之外)
- 在新目录中创建veracrypt文件容器
- 将容器装入
- 即使装载点位于加密目录中,sbt也可以正常工作)
- 可以使用复杂密码创建容器,并在登录时装载 veracrypt-t--pim=0--protect hidden=no-k”“-p$PASSWORD$ENCRYPTED\u CONTAINER$MOUNT\u DIR
ScalaOptions++=Seq(“-Xmax类文件名”,“128”)
为我工作,注意这将破坏依赖项与超过78个字符的类文件的二进制兼容性。有节制地降低限额。如果240可以工作,请使用它。这有一个缺点,编译器输出(容易可逆)不再驻留在加密的文件系统上。在我的情况下,在该页面上,我有每个模块的默认编译器选项,以及单独的SBT配置文件。在我将选项添加到SBT配置文件下(而不是默认配置文件下)后,此解决方案起作用。