我正在尝试使用 Intellij 的 Cursive 中的 Leiningen 插件从我的基本 Clojure 项目中制作一个独立的 jar。
为了创建项目,我刚刚创建了 project.clj 文件,将其打开,Cursive 提出将其导入为项目。
项目.clj:
(defproject WaterTimer "1"
:description "A timer that reminds you to drink water"
:main tone-producer/main)
音调生成器.clj:
(ns tone-producer
(:require [general-helpers :as g])
(:import [javax.sound.midi MidiSystem
Synthesizer
MidiChannel])
(:gen-class))
(defn main [& args]
(println "Test!"))
当我运行“uberjar”任务时,我得到以下输出:
警告:指定了 :main 而不将其包含在 :aot 中。
:main 的隐式 AOT 将在 Leiningen 3.0.0 中删除。
如果您的 uberjar 只需要 AOT,请考虑将 :aot :all 添加到您的
:uberjar 配置文件。
警告:jar 中不存在指定的主类。它可能无法按预期执行。包含 main 方法的命名空间中可能缺少 gen-class 指令。
创建 C:\Users\slomi\IdeaProjects\WaterTimer\target\WaterTimer-1.jar
创建 C:\Users\slomi\IdeaProjects\WaterTimer\target\WaterTimer-1-standalone.jar
我也尝试过改变main
函数具有默认名称,并省略名称defproject
:
(defproject WaterTimer "1"
:description "A timer that reminds you to drink water"
:main tone-producer)
(ns tone-producer
(:require [general-helpers :as g])
(:import [javax.sound.midi MidiSystem
Synthesizer
MidiChannel])
(:gen-class))
(defn -main [& args]
(println "Test!"))
但现在我收到错误:
错误:无法找到或加载主类 clojure.main
编译失败:子进程失败
结构是:
如有任何指导,我们将不胜感激。
一番摆弄之后
- 我掉了
(:require [general-helpers :as g])
因为没有必要证明这个问题
- Error: Could not find or load main class clojure.main Compilation failed
-
:gen-class
needs AOT - as Sanchayan pointed out
项目.clj
(defproject WaterTimer "0.0.1"
:description "A timer that reminds you to drink water"
:dependencies [[org.clojure/clojure "1.8.0"]] ;; <- [1]
:main tone-producer
:aot [tone-producer]) ;; <- [2]
src/tone_ Producer.clj -在文件名中使用“_”而不是“-”
(ns tone-producer
(:import [javax.sound.midi MidiSystem
Synthesizer
MidiChannel])
(:gen-class))
(defn -main [& args]
(println "Test!"))
Result:
$ lein uberjar
Compiling tone-producer
Compiling tone-producer
Created .../watertimer/target/WaterTimer-0.0.1.jar
Created .../watertimer/target/WaterTimer-0.0.1-standalone.jar
$ java -jar target/WaterTimer-0.0.1-standalone.jar
Test!
一般来说,我建议启动一个项目lein new <name>
通过命令行并将其导入到所选的 Cursive/其他 IDE 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)