我正在尝试使用 ClojureScript 在浏览器中呈现一些 HTML,但不是很接近。
到目前为止,我已经安装了:Clojure、leiningen、Figwheel、IntelliJ、Cursive。我想使用试剂并重新装框。我已经尝试过 Chestnut(这是我看到的最接近渲染的 html)。我不确定我是否还需要其他东西。
我想要实现的是使用所有这些工具作为我的环境并开始创建一个网络应用程序。
无花果轮似乎是主要问题。
我目前要做的事情:使用 IntelliJ 和 Cursive 创建了一个 Clojure 项目。我正在关注 this 文章以尝试启动并运行 - 我已经到了它说
Start Figwheel from the terminal (lein figwheel)
的地步。当我这样做时,IntelliJ 中的终端打印
Exception in thread "main" java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter, compiling:(cljs/closure.clj:1:1)
.
当我用谷歌搜索这个错误时,解决方案是将这一行添加到
project.clj
:
:jvm-opts ["--add-modules" "java.xml.bind"]
然后我再次在终端运行
lein figwheel
,这次我得到:
java.lang.module.FindException: Module java.xml.bind not found
然后我进入 IntelliJ > File > Project Structure > Platform SDKs 并将 SDK 路径更改为 1.8。我已经尝试了 12 和 8。没有任何效果。
我接近了吗?我怎样才能继续前进?我已经完成了入门教程,但它们只关注 REPL,而不是完整的 Web 开发环境等。
问题是由于您使用较新的 JDK 版本(9+)和旧的 figwheel 东西仍然期待 JDK8 引起的。
一个修复方法是您已经找到的
--add-modules
但我很确定包名称是 javax.xml.bind
但我可能错了。
另一个“更简单”的修复只是向
:dependencies
向量添加一个额外的依赖项。
[javax.xml.bind/jaxb-api "2.3.0"]
过去一年最好用的Figwheel不是用Leiningen,而是用Clojure
deps.edn
系统。
Figwheel-Main 网站上有完整的详细信息:https://figwheel.org/
完成教程。
为了使用 Cursive,我首先创建项目目录和文件,然后通过以下方式将其添加到 Cursive/IntelliJ:
File -> New -> Project from Existing Sources
对于基于 Clojure 'lein' 的项目,我单击文件
project.clj
。对于基于 ClojureScript“deps”的项目,您可以单击deps.edn
,或者只单击父目录(我没有尝试创建 CLJS 项目)。