简体   繁体   中英

How to set up ClojureScript environment with Cursive and Figwheel?

I have spent almost 2 days trying to get to the stage where I can render some html in the browser using ClojureScript, but am not very close.

So far I have installed: Clojure, leiningen, Figwheel, IntelliJ, Cursive. I would like to use reagent and re-frame. I have tried Chestnut (this is the closest I have come to seeing rendered html). I am not sure if I need anything else.

What I would like to achieve is to use all of these tools as my environment and start creating a web app.

Figwheel seems to be the main problem.

Where I've currently got to: Created a Clojure project with IntelliJ and Cursive. I am following this article to try and get up and running - I've got to the point where it says Start Figwheel from the terminal (lein figwheel) . When I do, the terminal in IntelliJ prints

Exception in thread "main" java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter, compiling:(cljs/closure.clj:1:1) .

When I google this error, a the solution is to add this line to the project.clj :

:jvm-opts ["--add-modules" "java.xml.bind"]

Then I run lein figwheel in the terminal again and this time I get:

java.lang.module.FindException: Module java.xml.bind not found

Then I got to IntelliJ > File > Project Structure > Platform SDKs and change the SDK path to 1.8. I have tried 12 and 8. Nothing works.

Am I close? How can I move on? I've done the getting started tutorials but they just focus on REPLs and not a full on web development environment etc. Many thanks.

The best way to use Figwheel for the past year is not with Leiningen, but with the Clojure deps.edn system.

Full details are on the Figwheel-Main website: https://figwheel.org/

Work through the tutorial.


For using Cursive, I first create the project directory & files, and then add it to Cursive/IntelliJ via:

 File -> New -> Project from Existing Sources

For a Clojure 'lein' based project, I click on the file project.clj . For a ClojureScript 'deps' based project, you could click on deps.edn , or just the parent directory (I haven't experimented creating CLJS projects).

The problem is caused by you using a newer JDK Version (9+) and the older figwheel stuff still expecting JDK8.

One fix is the --add-modules you already found but I'm pretty sure the package name is javax.xml.bind but I might be wrong.

The other fix that is "easier" is just adding an additional dependency to the :dependencies vector.

[javax.xml.bind/jaxb-api "2.3.0"]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM