Подтвердить что ты не робот

Слишком длинное имя файла 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.

4b9b3361

Ответ 1

Вот как я решил свою проблему

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

Ответ 2

Если ваша /home является зашифрованной файловой системой (например, LUKS), вы можете столкнуться с этой проблемой.

Настройка max-classfile-name до 254 по умолчанию (или может быть 255) - поэтому вы не уменьшаете ее. Вероятно, вам стоит подумать над чем-то ближе к максимальной длине 70 - 100. Вы можете установить его для всех своих проектов, создав ~/.sbt/0.13/local.sbt с помощью переопределения scalac:

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

Ответ 3

Я столкнулся с этой проблемой в IntelliJ Ultimate 2016.1.2 (что напоминает Intellij 14). Я решил это, установив:

-Xmax-classfile-name 78 

В Файл > Настройки... > Сборка, выполнение, развертывание > Компилятоp > Scala Компилятоp > Дополнительные параметры компилятора.

ПРИМЕЧАНИЕ. имеется пробел между именем опции и ее значением ( "78" ), а не знаком равенства.

Ответ 4

Попробуйте использовать оболочку script следующим образом:

#!/bin/sh

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

Запуск этого в вашем каталоге src/main/ scala должен показать вам, какие файлы имеют имя с более чем 254 символами. Надеюсь, это ответит на ваш вопрос.

Ответ 5

  • Установка пределов длины файла может быть небезопасной, я не смог найти официальную документацию, в которой это решение безопасно.
  • Использование незашифрованного каталога небезопасно.

Я хочу предложить другой подход:

  • установить veracrypt (в ubuntu с apt)
  • создать нешифрованный каталог (за пределами зашифрованного домашнего каталога пользователя)
  • создать контейнер файла veracrypt в новом каталоге
  • установите контейнер в

  • sbt отлично работает, даже если точка монтирования находится в зашифрованном каталоге)
  • Можно создать контейнер со сложным паролем и монтировать при входе в систему

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