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

时间:2009-10-14 13:51:05

标签: java clojure executable

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

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

2 个答案:

答案 0 :(得分:16)

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

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

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

使用您将使用的依赖项编辑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非常有用,因为您可以输入lein swank来启动一个swank实例,您可以通过emacs连接到该实例。

:main定义了什么命名空间包含-main函数。

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

希望这可以帮助任何有问题的人!

答案 1 :(得分:3)

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