所以我目前有以下代码: 通用标签

在Emacs中执行C-c C-k之后,得到以下输出: 通用标签

但是当我执行lein uberjar并运行生成的jar文件时,出现错误: 通用标签

所以我有两个问题:

  1. 为什么uberjar的功能与REPL完全不同?
  2. 如何解决此问题?
有帮助吗?

解决方案

1。为什么uberjar的功能与REPL不同?

导致错误“ NO_SOURCE_PATH”的原因是您当前不在定义“ foo”的命名空间中。

为了说明:如果我在REPL中评估您的代码并执行它,它会像您期望的那样将我置于contact-form.core命名空间中,因为(ns contact-form.core)是由REPL评估的,但是如果我切换到user命名空间并调用-main,我可以产生相同的错误: 通用标签

因此,通过将您的generaodicetagcode的入口指定为独立的uberjar执行(在REPL之外),这等效于从jar的默认命名空间main中调用(contact-form.core/-main),因为clojure.core尚未被评估。结果:(ns contact-form.core可以使用函数的完全限定(命名空间)路径执行,但是main中的所有符号在当前默认名称空间中均不可用。

2。修复

解决方案是先显式切换到您的命名空间。 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top