Nom de fichier trop long sbt

Je reçois une erreur disant que j'ai un fichier trop long dans 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

Comment puis-je savoir quel fichier est trop long pour que je puisse raccourcir le nom de fichier? J'ai ajouté l'indicateur du compilateur -Xmax-classfile-name et l'ai défini sur 254.

29
demandé sur Chris Stewart 2015-02-17 19:11:33

5 réponses

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

Définir max-classfile-name à 254 est la valeur par défaut (ou peut-être 255) - donc vous ne le réduisez 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 remplacement scalac:

scalacOptions ++= Seq("-Xmax-classfile-name","78")
52
répondu Brett 2016-02-26 13:42:45

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
répondu Chris Stewart 2015-02-17 17:56:26

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

-Xmax-classfile-name 78 

Dans Fichier > Paramètres... > Construire, Exécuter, Déployer > Compilateur > Compilateur Scala > Options De Compilateur Supplémentaires .

NOTE: Il y a un Espace entre le nom de l'option et sa valeur ("78"), pas un signe égal.

6
répondu Adrian Redgers 2016-05-19 16:08:25

Essayez d'utiliser un script shell comme ceci:

#!/bin/sh

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

L'exécution de ceci 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
répondu Mario P. Waxenegger 2015-02-17 16:32:27
  • Définir les limites de longueur de fichier peut être dangereux, je n'ai trouvé aucune documentation officielle 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éez un conteneur de fichier veracrypt dans le nouveau répertoire
  • monter le conteneur dans

  • sbt fonctionne bien même si le point de montage se trouve dans le répertoire chiffré)
  • Il est possible de créer le conteneur avec un mot de passe complexe et de le monter sur login

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

0
répondu ozma 2017-09-25 10:06:29