从 clojure 项目创建可执行 jar 文件?

2022-09-01 23:39:37

我有一个clojure项目,它使用光滑的2d游戏引擎,我试图将其作为可执行jar文件运行。我在 Netbeans 和 Eclipse 中都创建了这个项目,我没有运气将它们导出为可执行格式。它不断给出错误,找不到主类,然后给出我的主类。我已尝试编辑清单文件更改名称,希望它能找到它,但到目前为止没有运气。

它确实在开发环境中运行,但不在开发环境之外运行。


答案 1

自从我发布这个问题以来已经有一段时间了,我想我会坚持我发现的东西,因为对于任何需要回答这个问题的人来说。

我现在使用Leiningen来管理我的项目,尽管我已经开始使用cljr,这是一个补充它的repl和包管理器。这两种方法都使生成可运行的 jar 文件变得更加简单。

以莱宁根为例,使用网站上的说明进行设置,然后在您的工作区中调用。这将创建一个文件夹来容纳您的项目以及一个用于源的子文件夹,并测试自述文件和 project.clj 文件。lein new

使用您将要使用的依赖项编辑 project.clj。Dev-dependencies 是纯粹用于开发所需的依赖项,例如以下示例中所示的 swank-clojure。

(defproject myproject "0.0.1-SNAPSHOT"
  :description "My Personal Project."
  :url "http://example.com/my-project"
  :dependencies [[org.clojure/clojure "1.1.0"]
                 [org.clojure/clojure-contrib "1.1.0"]
                 [**other dependencies**]]
  :dev-dependencies [[swank-clojure "1.2.1"]]
  :main [org.myproject.core])

我发现swank-clojure很有用,因为你可以键入一个swank实例,你可以通过emacs连接到它。lein swank

:main 定义了哪个命名空间包含 -main 函数。

调用将创建一个独立的jar,然后运行。lein uberjar

希望这能帮助任何有我问题的人!


答案 2

我不得不添加clojure.jar和clojure-contrib.jar作为项目的“依赖关系”,以使其包含在jar中。一旦我明白了,我就能够运行生成的罐子。请记住,Netbeans 有自己的 clojure.jar用于运行插件本身,这不需要是程序使用的相同 clojure.jar。Netbeans 有一个用于添加库的菜单。您需要将 clojure[-contrib].jar添加到构建和运行库中


推荐