Votre fichier est probablement utilisé par un autre processus. Fermez toutes les applications que vous utilisez ou redémarrez votre système d'exploitation, puis essayez de recompiler.
Vous essayez de charger manuellement un module, qui fait partie d'Erlang/OTP.
De la documentation:
Le système d'Erlang est vous protéger.
La solution la plus simple consiste à renommer votre module , par ex. à mysets.erl. Il est également possible de «décoller» le répertoire contenant le module de bibliothèque.
Voir code:unstick/1
.
aussi:
Pour éviter le rechargement accidentellement modules affectant le système d'exécution Erlang lui-même, les kernel
, stdlib
et compiler
répertoires sont considérés comme collant. Cela signifie que le système émet un avertissement et rejette la demande si un utilisateur tente de recharger un module résidant dans l'un d'entre eux. La fonctionnalité peut être désactivée à l'aide de l'indicateur de ligne de commande -nostick
.
Voir erl(1)
.
Par exemple:
$ erl -nostick
Eshell V5.7.3 (abort with ^G)
1> c(gb_trees).
{ok,gb_trees}
2> gb_trees:module_info().
[{exports,[{foo,2},{module_info,0},{module_info,1}]},
{imports,[]},
{attributes,[{vsn,[338095567601101424197378397768992511838]}]},
{compile,[{options,[]},
{version,"4.6.3"},
{time,{2011,2,3,11,39,53}},
{source,"/tmp/gb_trees.erl"}]}]
3>
Vous voyez que nous pouvons compiler et charger le module en VM.
Cependant, vous pouvez simplement renommer votre module gb_trees
à quelque chose comme gb_trees_mine
et utiliser les fonctions qu'il exporte:
1> gb_trees_mine:foo(13,42).
bar
2>