我有一个clojure项目,它使用了我试图作为可执行jar文件运行的灵活的2d游戏引擎。我在Netbeans和Eclipse中创建了这个项目,我没有把它们导出成可执行格式的运气。它一直给错误找不到主类,然后给我的主类。我已经尝试编辑清单文件来改变名称,希望它能找到它但到目前为止没有运气。
它确实在开发环境中运行,但不在其外部运行。
答案 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添加到构建和运行库