Clojure and ClojureScript Boot and Boot-reload Error

boot, clojure, clojurescript

Recently, I attempted to get started with the boot build system by running the boot-cljs-example repository.

On my system, while running the suggested build script:

1
boot serve -d target/ watch speak reload cljs-repl cljs -sO none

I ran into the following error:

1
2
3
4
5
6
7
8
james@james-desktop: boot serve -d target/ watch speak reload cljs-repl cljs -sO none
WARNING: test already refers to: #'clojure.core/test in namespace: boot.user, being replaced by: #'boot.user/test
             clojure.lang.ExceptionInfo: java.lang.NoClassDefFoundError: clojure/lang/IFn, compiling:(org/httpkit/server.clj:23:11)
    data: {:file "/tmp/boot.user6465695604758877332.clj", :line 21}
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: clojure/lang/IFn, compiling:(org/httpkit/server.clj:23:11)
clojure.lang.Compiler$CompilerException: java.lang.NoClassDefFoundError: clojure/lang/IFn, compiling:(org/httpkit/server.clj:23:11)
         java.lang.NoClassDefFoundError: clojure/lang/IFn
       java.lang.ClassNotFoundException: clojure.lang.IFn

To fix this: note that boot relies on a boot.properties file for version information and uses that instead of your system versions if set.

To fix the error above, change your BOOT_VERSION in boot.properties to be 2.7.2 instead of 2.5.5.

Happy coding! For extra information, see the version information below:

Version & System Notes

To do so, I installed the default version of boot as of the time of writing. The version output of this version is:

1
2
3
4
5
6
james@james-desktop:$ boot --version
#http://boot-clj.com
#Fri Dec 01 03:51:00 EST 2017
BOOT_CLOJURE_NAME=org.clojure/clojure
BOOT_CLOJURE_VERSION=1.8.0
BOOT_VERSION=2.7.2

Additionally, I am running Java 1.8. and node 7.10 via Ubuntu 16.04’s node package, but with nvm (node version manager) installed.