web-dev-qa-db-fra.com

Nom de fichier trop long sbt

Je reçois une erreur en disant que j'ai un fichier qui est trop long dans SSB. 

 [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

Comment savoir quel fichier est trop long pour pouvoir le raccourcir? J'ai ajouté l'indicateur de compilation -Xmax-classfile-name et le fixe à 254.

29
Chris Stewart

Voici comment j'ai résolu mon problème

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

Si votre /home est un système de fichiers crypté (par exemple, LUKS), vous pouvez rencontrer ce problème.

Définir max-classfile-name à 254 est la valeur par défaut (ou peut-être 255) - vous ne le réduisez donc pas beaucoup. Vous devriez probablement envisager quelque chose de plus proche d'une longueur maximale de 70 - 100. Vous pouvez le définir pour tous vos projets en créant ~/.sbt/0.13/local.sbt avec le paramètre scalac:

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

J'ai rencontré ce problème dans IntelliJ Ultimate 2016.1.2 (qui ressemble à Intellij 14). Je l'ai résolu en mettant:

-Xmax-classfile-name 78 

Dans Fichier> Paramètres ...> Générer, Exécuter, Déployer> Compilateur> Compilateur Scala> Options de compilateur supplémentaires .

REMARQUE: il y a un espace entre le nom de l'option et sa valeur ("78"), et non un signe égal.

6
Adrian Redgers
  • La définition des limites de longueur de fichier peut être dangereuse, je n’ai trouvé aucun document officiel indiquant que cette solution est sûre.
  • L'utilisation d'un répertoire non chiffré n'est pas sûre.

Je veux proposer une approche différente:

  • installer veracrypt ( dans Ubuntu avec apt )
  • créer un répertoire non chiffré (en dehors du répertoire personnel de l'utilisateur chiffré)
  • créer un conteneur de fichiers veracrypt dans le nouveau répertoire
  • monter le conteneur dans 

  • sbt fonctionne bien même si le point de montage est dans le répertoire crypté)
  • Il est possible de créer le conteneur avec un mot de passe complexe et de le monter à la connexion.

    veracrypt -t --pim = 0 --protect-hidden = no -k "" -p $ MOT DE PASSE $ ENCRYPTED_CONTAINER $ MOUNT_DIR

0
ozma

Essayez d’utiliser un script Shell comme ceci:

#!/bin/sh

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

L'exécuter dans votre répertoire src/main/scala devrait vous montrer quels fichiers ont un nom avec plus de 254 caractères. J'espère que cela répond à votre question.

0
Mario P. Waxenegger