0

我花了将近 2 天的时间试图达到可以html使用 ClojureScript 在浏览器中渲染一些内容的阶段,但不是很接近。

到目前为止,我已经安装了:Clojure、leiningen、Figwheel、IntelliJ、Cursive。我想使用试剂和重新框架。我已经尝试过 Chestnut(这是我看到的最接近呈现的 html)。我不确定我是否需要其他任何东西。

我想要实现的是使用所有这些工具作为我的环境并开始创建一个 Web 应用程序。

Figwheel 似乎是主要问题。

我目前要去的地方:用 IntelliJ 和 Cursive 创建了一个 Clojure 项目。我正在关注这篇文章以尝试启动并运行 - 我已经到了它所说的地步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 开发环境等。非常感谢。

4

2 回答 2

2

问题是由于您使用较新的 JDK 版本(9+)和较旧的 figwheel 东西仍然期待 JDK8 引起的。

一种解决方法是--add-modules您已经找到了,但我很确定包名称是javax.xml.bind,但我可能错了。

另一个“更简单”的修复只是向:dependencies向量添加了一个额外的依赖项。

[javax.xml.bind/jaxb-api "2.3.0"]
于 2019-08-30T20:00:14.367 回答
0

过去一年使用 Figwheel 的最佳方式不是使用 Leiningen,而是使用 Clojuredeps.edn系统。

详细信息请参见 Figwheel-Main 网站: https ://figwheel.org/

完成教程。


对于使用 Cursive,我首先创建项目目录和文件,然后通过以下方式将其添加到 Cursive/IntelliJ:

 File -> New -> Project from Existing Sources

对于基于 Clojure 'lein' 的项目,我单击文件project.clj. 对于基于 ClojureScript 'deps' 的项目,您可以单击deps.edn,或者只单击父目录(我没有尝试创建 CLJS 项目)。

于 2019-08-30T15:12:08.113 回答