我创建了一个.erlang文件来指定我的工作目录并在启动时加载某些模块。我使用了here的答案,当所有要加载的模块都驻留在当前工作目录中时,它运行良好:
shell_default:cd("C:/Users/Some/Default/Working Directory/ebin").
LP = fun() ->
[code:ensure_loaded(list_to_atom(filename:rootname(filename:basename(F))))
|| P <- code:get_path(), F <- filelib:wildcard(P ++ "/*.beam")]
end.
spawn(LP).
当我尝试从其他目录加载模块时,遇到了一些麻烦。我更改了.erlang文件:
shell_default:cd("C:/Users/Some/Default/Working Directory/ebin").
code:add_patha("C:/Users/Some/Other/File Location/ebin").
LP = fun() ->
[code:ensure_loaded(list_to_atom(filename:rootname(filename:basename(F))))
|| P <- code:get_path(), F <- filelib:wildcard(P ++ "/*.beam")]
end.
spawn(LP).
由于某种原因,未加载添加的代码路径中的模块(我检查了路径确实已添加到代码路径中)。当我使用所需的代码路径单独测试filelib:wildcard(code:get_path() ++ "/*.beam")
时,我看到它返回一个空字符串(即它似乎没有在添加的代码路径中找到.beam文件)。
如何解决这个问题?谢谢!