Noir uberjar仅适用于构建目录

时间:2012-10-28 19:07:17

标签: clojure leiningen noir

我正在尝试使用clojure Web框架noir分发一个小型Web应用程序构建。当使用lein run运行时,它按预期工作。当我运行lein uberjar然后java -jar project-1.0.0-standalone.jar时,它会按预期运行。但是,如果我移动jar文件(project-1.0.0-standalone.jar),它会运行,但每个页面都会产生404.我project.clj是由lein noir new生成的默认文件,除了我添加的:omit-source true:aot :all

我正在使用:

leiningen 1.7.1

clojure 1.2.1

noir 1.2.1

如何制作一个可以在没有来源的情况下分发给其他人的jar?

2 个答案:

答案 0 :(得分:0)

如果您尚未对命名空间定义添加gen-class次调用,则添加它们可能会解决此问题。您可以通过运行

来测试它
  lein clean
  lein compile

并确保您看到正在构建的每个类

答案 1 :(得分:0)

我相信您遇到的问题是因为noir.server / load-views需要命名空间。如果从目标/目录移动它,它将无法再找到您传递给加载视图的视图目录。

解决方法是明确要求所有视图而不是使用load-views函数。然后你应该可以在任何地方运行uberjar。