【发布时间】:2010-12-06 16:27:39
【问题描述】:
我有一个 clojure 项目,它使用我试图作为可执行 jar 文件运行的 2d 游戏引擎。我在 Netbeans 和 Eclipse 中都创建了这个项目,但我没有运气将它们导出为可执行格式。它一直给出错误找不到主类,然后给出我的主类。我已经尝试编辑清单文件更改名称,希望它会找到它,但到目前为止还没有运气。
它确实在开发环境中运行,但不在它之外。
【问题讨论】:
标签: java clojure executable
我有一个 clojure 项目,它使用我试图作为可执行 jar 文件运行的 2d 游戏引擎。我在 Netbeans 和 Eclipse 中都创建了这个项目,但我没有运气将它们导出为可执行格式。它一直给出错误找不到主类,然后给出我的主类。我已经尝试编辑清单文件更改名称,希望它会找到它,但到目前为止还没有运气。
它确实在开发环境中运行,但不在它之外。
【问题讨论】:
标签: java clojure executable
我必须将 clojure.jar 和 clojure-contrib.jar 添加为项目的“依赖项”,以使其包含在 jar 中。一旦我知道了,我就可以运行生成的 jar。请记住,Netbeans 有它自己的 clojure.jar,用于运行它自己的插件,它不需要与您的程序使用的 clojure.jar 相同。 Netbeans 有一个用于添加库的菜单。您需要将 clojure[-contrib].jar 添加到构建和运行库中
【讨论】:
自从我发布这个问题以来已经有一段时间了,我想我会坚持我的发现,以便任何需要回答这个问题的人。
我现在使用Leiningen 来管理我的项目,尽管我已经开始使用cljr 这是一个补充它的repl 和包管理器。这两种方法都可以让生成可运行的 jar 文件变得更加简单。
以 Leiningen 为例,使用网站上的说明进行设置,然后在您的工作区中调用lein new。这将创建一个文件夹来存放您的项目以及一个用于源代码的子文件夹,并测试一个自述文件和一个 project.clj 文件。
使用您将使用的依赖项编辑 project.clj。开发依赖项是您纯粹用于开发的依赖项,例如下面示例中显示的 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 来启动一个可以通过 emacs 连接的 swank 实例。
:main 定义了包含 -main 函数的命名空间。
调用 lein uberjar 将创建一个独立的 jar,然后运行。
希望对遇到我问题的人有所帮助!
【讨论】:
Error: Could not find or load main class [prueba.core]。我已经包含了:main 及其对应的值,并且我有一个-main 函数在该命名空间中是公共的。知道可能出了什么问题吗?
project.clj 在包含src 包含prueba 包含core.clj 的文件夹中吗?您是否使用了lein new <PROJECT NAME>,然后编辑了创建的core.clj 文件?如果没有,您能否尽可能清楚地解释您所做的事情?
:main root.scriptlauncher :aot [root.scriptlauncher] 为 defproject。