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.
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")
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
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.
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.
- 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