Возможно, ваш файл используется другим процессом. Закройте все приложения, которые вы используете, или перезапустите вашу ОС, затем попробуйте перекомпилировать.
Вы пытаетесь вручную загрузить модуль, который является частью Erlang / OTP.
Из документации:
Система исполнения Erlang
защищаю тебя.
Самое простое решение - переименовать
модуль, например на mysets.erl. Это также
можно «отклеить» каталог
содержащий библиотечный модуль.
См. code:unstick/1
.
Также:
для предотвращения случайной перезагрузки
модули, влияющие на время выполнения Erlang
Сама система, kernel
, stdlib
и
compiler
каталоги считаются
липкий . Это означает, что система
выдает предупреждение и отклоняет
запросить, если пользователь пытается перезагрузить
модуль проживает в любом из них.
Функция может быть отключена с помощью
флаг командной строки -nostick
.
См. erl(1)
.
Например:
$ 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>
Вы видите, что мы можем скомпилировать и загрузить модуль в ВМ.
Однако вы можете просто переименовать свой модуль gb_trees
во что-то вроде gb_trees_mine
и использовать экспортируемые им функции:
1> gb_trees_mine:foo(13,42).
bar
2>