具有引导clj和Emacs的Clojure-最小应用程序

具有引导clj和Emacs的Clojure-最小应用程序,emacs,clojure,cider,boot-clj,Emacs,Clojure,Cider,Boot Clj,如何使用引导clj和Emacs运行最小的Clojure应用程序 我安装了启动应用程序并运行了两次Boot-h。然后我得到了这个 s@Lux:~$ boot -V #http://boot-clj.com #Mon Feb 04 00:23:28 CET 2019 BOOT_CLOJURE_NAME=org.clojure/clojure BOOT_CLOJURE_VERSION=1.8.0 BOOT_VERSION=2.8.2 s@Lux:~$ 我的Emacs版本如下 GNU Emacs 2

如何使用引导clj和Emacs运行最小的Clojure应用程序

我安装了启动应用程序并运行了两次
Boot-h
。然后我得到了这个

s@Lux:~$ boot -V
#http://boot-clj.com
#Mon Feb 04 00:23:28 CET 2019
BOOT_CLOJURE_NAME=org.clojure/clojure
BOOT_CLOJURE_VERSION=1.8.0
BOOT_VERSION=2.8.2
s@Lux:~$ 
我的Emacs版本如下

GNU Emacs 25.1.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
of 2017-09-15, modified by Debian
我安装了
苹果酒
clojure模式
射弹

我用本教程配置了Emacs 并获得一个配置文件:

s@Lux:~$ cat ~/.emacs.d/init.el
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.org/packages/") t)
(package-initialize)

(custom-set-variables
 '(cider-boot-parameters (quote "cider repl -s wait"))
 '(package-selected-packages (quote (projectile clojure-mode-extra-font-locking cider))))
s@Lux:~$
s@Windown:~/Dropbox/Clojure/myapp2$ cat ~/.emacs.d/init.el
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.org/packages/") t)
(package-initialize)

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(cider-boot-parameters (quote "repl -s wait"))
 '(package-selected-packages
   (quote
    (clojure-mode projectile clojure-mode-extra-font-locking cider))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )
s@Windown:~/Dropbox/Clojure/myapp2$ 
然后我把这个打印出来
C-xc-f~/Dropbox/Clojure/myapp2/src/myapp2/core.clj

文件打开了

这是文件的代码:

s@Lux:~$ cat ~/Dropbox/Clojure/myapp2/src/myapp2/core.clj
(ns myapp2.core
  (:gen-class))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "Hello, World!"))
s@Lux:~$ 
该文件位于由boot clj命令生成的项目中
boot-d boot/new-t app-n myapp2

然后我在中输入了这个
M-x苹果酒插孔,得到了一个错误:

    line: 1

error in process sentinel: Could not start nREPL server: Classpath conflict: org.clojure/clojure version 1.8.0 already loaded, NOT loading version 1.10.0
Classpath conflict: org.clojure/clojure version 1.8.0 already loaded, NOT loading version 1.10.0
Classpath conflict: org.clojure/clojure version 1.8.0 already loaded, NOT loading version 1.10.0
                                       java.lang.Thread.run              Thread.java:  748
         java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  624
          java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1149
                        java.util.concurrent.FutureTask.run          FutureTask.java:  266
                                                        ...                               
                        clojure.core/binding-conveyor-fn/fn                 core.clj: 1938
                                          boot.core/boot/fn                 core.clj: 1032
                                        boot.core/run-tasks                 core.clj: 1022
                             boot.task.built-in/fn/fn/fn/fn             built_in.clj:  492
                                         clojure.core/deref                 core.clj: 2228
                                                        ...                               
                                boot.task.built-in/fn/fn/fn             built_in.clj:  489
                                         clojure.core/apply                 core.clj:  646
                                                        ...                               
                                     boot.core/launch-nrepl                 core.clj: 1313
                                     boot.repl/launch-nrepl                 repl.clj:   60
                              boot.repl-server/start-server          repl_server.clj:   68
                                 boot.repl-server/->mw-list          repl_server.clj:   59
                                                        ...                               
                                        clojure.core/mapcat                 core.clj: 2674 (repeats 2 times)
                                         clojure.core/apply                 core.clj:  646
                                                        ...                               
                                        clojure.core/map/fn                 core.clj: 2644
                                 boot.repl-server/->mw-list          repl_server.clj:   55
                                     boot.repl-server/->var          repl_server.clj:   49
                                                        ...                               
                                       clojure.core/require                 core.clj: 5796 (repeats 2 times)
                                         clojure.core/apply                 core.clj:  648
                                                        ...                               
                                     clojure.core/load-libs                 core.clj: 5758
                                     clojure.core/load-libs                 core.clj: 5774
                                         clojure.core/apply                 core.clj:  648
                                                        ...                               
                                      clojure.core/load-lib                 core.clj: 5717
                                      clojure.core/load-lib                 core.clj: 5736
                                   clojure.core/load-lib/fn                 core.clj: 5737
                                      clojure.core/load-one                 core.clj: 5697
                                                        ...                               
                                          clojure.core/load                 core.clj: 5876
                                          clojure.core/load                 core.clj: 5892
                                       clojure.core/load/fn                 core.clj: 5893
                                                        ...                               
                         refactor-nrepl.middleware/eval2021           middleware.clj:    1
         refactor-nrepl.middleware/eval2021/loading--auto--           middleware.clj:    1
                                                        ...                               
                                       clojure.core/require                 core.clj: 5796 (repeats 2 times)
                                         clojure.core/apply                 core.clj:  648
                                                        ...                               
                                     clojure.core/load-libs                 core.clj: 5758
                                     clojure.core/load-libs                 core.clj: 5774
                                         clojure.core/apply                 core.clj:  648
                                                        ...                               
                                      clojure.core/load-lib                 core.clj: 5717
                                      clojure.core/load-lib                 core.clj: 5736
                                   clojure.core/load-lib/fn                 core.clj: 5737
                                      clojure.core/load-one                 core.clj: 5697
                                                        ...                               
                                          clojure.core/load                 core.clj: 5876
                                          clojure.core/load                 core.clj: 5892
                                       clojure.core/load/fn                 core.clj: 5893
                                                        ...                               
                refactor-nrepl.ns.resolve-missing/eval14613      resolve_missing.clj:    1
refactor-nrepl.ns.resolve-missing/eval14613/loading--auto--      resolve_missing.clj:    1
                                                        ...                               
                                       clojure.core/require                 core.clj: 5796 (repeats 2 times)
                                         clojure.core/apply                 core.clj:  648
                                                        ...                               
                                     clojure.core/load-libs                 core.clj: 5758
                                     clojure.core/load-libs                 core.clj: 5774
                                         clojure.core/apply                 core.clj:  648
                                                        ...                               
                                      clojure.core/load-lib                 core.clj: 5717
                                      clojure.core/load-lib                 core.clj: 5755
                                         clojure.core/apply                 core.clj:  648
                                                        ...                               
                                         clojure.core/refer                 core.clj: 4087
                                         clojure.core/refer                 core.clj: 4119
java.lang.IllegalAccessError: info-clj does not exist
  clojure.lang.ExceptionInfo: info-clj does not exist
    line: 1
但是当我移除了

 '(cider-boot-parameters (quote "cider repl -s wait"))
从配置行,重新启动Emacs,在
中运行苹果酒插孔,苹果酒成功启动。因此,我可以运行Clojure命令,如
(范围5)

但是,当我试图运行应用程序并输出
(-main)
时,它崩溃了,并且出现了一条信息,表明发生了错误,并且
main
符号无法解决:

user> (-main)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: -main in this context, compiling:(*cider-repl Clojure/myapp2:localhost:45545(clj)*:43:7) 
user> 


因此,苹果酒似乎找不到
-main
函数。也许我应该在另一个地方键入
苹果酒插孔
命令?但是在哪里呢?苹果酒启动参数的问题也很奇怪。如何使用bootclj和emacs-25运行任何Clojure应用程序。(问题也发生在emacs26和emacs27上)。

我重新安装了Debian,安装了boot和emacs25

然后创建了一个配置文件:

s@Lux:~$ cat ~/.emacs.d/init.el
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.org/packages/") t)
(package-initialize)

(custom-set-variables
 '(cider-boot-parameters (quote "cider repl -s wait"))
 '(package-selected-packages (quote (projectile clojure-mode-extra-font-locking cider))))
s@Lux:~$
s@Windown:~/Dropbox/Clojure/myapp2$ cat ~/.emacs.d/init.el
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.org/packages/") t)
(package-initialize)

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(cider-boot-parameters (quote "repl -s wait"))
 '(package-selected-packages
   (quote
    (clojure-mode projectile clojure-mode-extra-font-locking cider))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )
s@Windown:~/Dropbox/Clojure/myapp2$ 
然后安装苹果酒、clojure模式和射弹。然后它成功了

版本信息

This is GNU Emacs 25.1.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2017-09-15, modified by Debian
            Emacs Package Library
  projectile         20190126.1117 installed             Manage and navigate projects in Emacs easily
  clojure-mode       20190105.1043 installed             Major mode for Clojure code
  cider              20190125.1339 installed             Clojure Interactive Development Environment that Rocks