Вероятно, ваш файл используется другим процессом. Закройте все приложения, которые вы используете, или перезагрузите ОС, затем попробуйте перекомпилировать.
Вы пытаетесь вручную загрузить модуль, который является частью 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>
person
YasirA
schedule
03.02.2011