我已经通过下面的命令创建了一个使用Luminus的项目:
lein new luminus myapp +mysql +kee-frame +swagger +oauth +kibit
在这个项目中,我创建了一个API调用,它调用一个函数来从磁盘读取文件。API调用(部分):
{:get {:summary "Returns a file from disk to show in GUI"
:responses {200 {:body ::val/my-file}}
:handler (constantly
{:status 200
:body (gui/get-file)})}}函数get-file位于与myapp.db.gui相关的名称空间中,如下所示:
(defn get-file
[]
(log/info "Trying to retrieve file")
(read-string (slurp "file.edn")))当我启动一个REPL并输入命令(mount/start)时,应用程序正常启动,并且我可以进行API调用来查看文件的内容。文件位置现在位于我的项目的根目录中。但是,如果我将文件放在resources/myapp中,并将slurp命令更改为(slurp "myapp/file.edn")或(slurp "resources/myapp/file.edn"),则在运行(mount/start)之后会出现错误,并且应用程序不会启动。如果我尝试读取包含(slurp "C:\\Development\\file.edn")等绝对路径的文件,也会出现同样的错误
2020-04-30 12:02:03,512 [nREPL-session-88d31cf8-b119-4a87-901d-3eee1eb61cc7] INFO myapp.env --=[myapp started successfully using the development profile]=-
2020-04-30 12:02:03,607 [nREPL-session-88d31cf8-b119-4a87-901d-3eee1eb61cc7] INFO myapp.db.gui-related - Trying to retrieve file
Execution error (ConnectException) at java.net.DualStackPlainSocketImpl/connect0 (DualStackPlainSocketImpl.java:-2).
Connection refused: connect在这个项目中,我将有很多'config‘文件要读取,我希望能够将它们放在项目根目录下的一个或多个子文件夹中。除此之外,还有另一个要读入的文件,该文件位于我的应用程序的文件夹结构之外。
如何读取这些文件?
发布于 2020-04-30 23:47:49
对于java,你应该总是使用正斜杠;那就是(slurp "C:/Development/file.edn"),我想(我没有windows)。
另外,从相对路径读取应该是可行的;您可以使用(System/getProperty "user.dir")检查REPL的当前工作目录,并验证路径是否正确。
发布于 2020-05-01 01:25:53
抱歉的。错误与slurp函数无关。在另一个函数中,我仍然有一个硬编码的API调用的URL,这一点已经改变了。因此我得到了这个
Execution error (ConnectException) at java.net.DualStackPlainSocketImpl/connect0 (DualStackPlainSocketImpl.java:-2).
Connection refused: connect它与读取文件无关,而是试图访问localhost:5001而不是localhost:5000。多谢你们的支持
https://stackoverflow.com/questions/61521127
复制相似问题