# java.lang.ClassCastException when starting a new clojurescript project

**URL:** https://clojureverse.org/t/java-lang-classcastexception-when-starting-a-new-clojurescript-project/10077
**Category:** Troubleshooting
**Created:** [May 27, 2023, 12:25am UTC](https://clojureverse.org/t/java-lang-classcastexception-when-starting-a-new-clojurescript-project/10077 "2023-05-27T00:25:33Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![toshi-san](https://clojureverse.org/letter_avatar_proxy/v4/letter/t/8dc957/32.png) [@toshi-san](https://clojureverse.org/u/toshi-san)
#### Post date: [May 27, 2023, 12:25am UTC](https://clojureverse.org/t/java-lang-classcastexception-when-starting-a-new-clojurescript-project/10077/1 "2023-05-27T00:25:34Z")

</div>

Hello, I am a newbie to Clojurescript. I am starting a tutorial, but I’ve gotten the following error. Could someone help me resolve the error.

**Environment**  
$ java --version  
openjdk 17.0.7 2023-04-18  
OpenJDK Runtime Environment (Red\_Hat-17.0.7.0.7-4.fc38) (build 17.0.7+7)  
OpenJDK 64-Bit Server VM (Red\_Hat-17.0.7.0.7-4.fc38) (build 17.0.7+7, mixed mode, sharing)

$ clojure --version  
Clojure CLI version 1.11.1.1273

**deps.edn**  
{:deps {:org.clojure/clojurescript {:mvn/version “1.11.60”}}  
:paths [“src”]  
}

**Command**  
clj -M -m cljs.main --compile my-cljs-project.core --repl

**Error Message**  
Downloading: org/clojure/clojure/1.11.1/clojure-1.11.1.pom from central  
Downloading: org/clojure/clojurescript/1.11.60/clojurescript-1.11.60.pom from central  
Downloading: org/sonatype/oss/oss-parent/7/oss-parent-7.pom from central  
Downloading: org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62.pom from central  
(…)  
Downloading: org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar from central  
Downloading: com/google/javascript/closure-compiler-unshaded/v20220502/closure-compiler-unshaded-v20220502.jar from central  
Downloading: javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar from central  
Error building classpath. class clojure.lang.Keyword cannot be cast to class clojure.lang.Symbol (clojure.lang.Keyword and clojure.lang.Symbol are in unnamed module of loader ‘app’)  
java.lang.ClassCastException: class clojure.lang.Keyword cannot be cast to class clojure.lang.Symbol (clojure.lang.Keyword and clojure.lang.Symbol are in unnamed module of loader ‘app’)  
at clojure.lang.Symbol.compareTo(Symbol.java:107)  
at clojure.lang.Util.compare(Util.java:153)  
at clojure.lang.APersistentVector.compareTo(APersistentVector.java:442)  
at clojure.lang.Util.compare(Util.java:153)  
at clojure.core$compare.invokeStatic(core.clj:842)  
at clojure.core$compare.invoke(core.clj:833)  
at clojure.lang.AFunction.compare(AFunction.java:51)  
at java.base/java.util.TimSort.binarySort(TimSort.java:296)  
at java.base/java.util.TimSort.sort(TimSort.java:221)  
at java.base/java.util.Arrays.sort(Arrays.java:1233)  
at clojure.core$sort.invokeStatic(core.clj:3116)  
at clojure.core$sort.invokeStatic(core.clj:3103)  
at clojure.tools.deps$sort\_paths.invokeStatic(deps.clj:564)  
at clojure.tools.deps$flatten\_libs.invokeStatic(deps.clj:572)  
at clojure.tools.deps$make\_classpath\_map.invokeStatic(deps.clj:591)  
at clojure.tools.deps$calc\_basis.invokeStatic(deps.clj:750)  
at clojure.tools.deps.script.make\_classpath2$run\_core.invokeStatic(make\_classpath2.clj:111)  
at clojure.tools.deps.script.make\_classpath2$run.invokeStatic(make\_classpath2.clj:153)  
at clojure.tools.deps.script.make\_classpath2$\_main.invokeStatic(make\_classpath2.clj:203)  
at clojure.tools.deps.script.make\_classpath2$\_main.doInvoke(make\_classpath2.clj:174)  
at clojure.lang.RestFn.applyTo(RestFn.java:137)  
at clojure.lang.Var.applyTo(Var.java:705)  
at clojure.core$apply.invokeStatic(core.clj:667)  
at clojure.main$main\_opt.invokeStatic(main.clj:514)  
at clojure.main$main\_opt.invoke(main.clj:510)  
at clojure.main$main.invokeStatic(main.clj:664)  
at clojure.main$main.doInvoke(main.clj:616)  
at clojure.lang.RestFn.applyTo(RestFn.java:137)  
at clojure.lang.Var.applyTo(Var.java:705)  
at clojure.main.main(main.java:40)

---

<div class="post-metadata">

### Author: ![toshi-san](https://clojureverse.org/letter_avatar_proxy/v4/letter/t/8dc957/32.png) [@toshi-san](https://clojureverse.org/u/toshi-san)
#### Post date: [May 27, 2023, 12:31am UTC](https://clojureverse.org/t/java-lang-classcastexception-when-starting-a-new-clojurescript-project/10077/2 "2023-05-27T00:31:35Z")

</div>

I also tried the following command, and it also fails.

**Another try**  
$ clj -X:deps prep  
Downloading: org/clojure/tools.deps.cli/0.9.35/tools.deps.cli-0.9.35.pom from central  
Downloading: org/clojure/tools.deps/0.18.1327/tools.deps-0.18.1327.pom from central  
Downloading: org/slf4j/slf4j-nop/1.7.36/slf4j-nop-1.7.36.pom from central  
(…)  
Downloading: org/apache/maven/maven-plugin-api/3.8.6/maven-plugin-api-3.8.6.jar from central  
Downloading: org/clojure/core.async/1.6.673/core.async-1.6.673.jar from central  
Downloading: org/apache/maven/maven-artifact/3.8.6/maven-artifact-3.8.6.jar from central  
Execution error (ClassCastException) at java.util.TimSort/binarySort (TimSort.java:296).  
class clojure.lang.Keyword cannot be cast to class clojure.lang.Symbol (clojure.lang.Keyword and clojure.lang.Symbol are in unnamed module of loader ‘app’)

Full report at:  
/tmp/clojure-17446059247664034537.edn

**Log**  
$ cat /tmp/clojure-17446059247664034537.edn  
{:clojure.main/message  
“Execution error (ClassCastException) at java.util.TimSort/binarySort (TimSort.java:296).\nclass clojure.lang.Keyword cannot be cast to class clojure.lang.Symbol (clojure.lang.Keyword and clojure.lang.Symbol are in unnamed module of loader ‘app’)\n”,  
:clojure.main/triage  
{:clojure.error/class java.lang.ClassCastException,  
:clojure.error/line 296,  
:clojure.error/cause  
“class clojure.lang.Keyword cannot be cast to class clojure.lang.Symbol (clojure.lang.Keyword and clojure.lang.Symbol are in unnamed module of loader ‘app’)”,  
:clojure.error/symbol java.util.TimSort/binarySort,  
:clojure.error/source “TimSort.java”,  
:clojure.error/phase :execution},  
:clojure.main/trace  
{:via  
[{:type java.lang.ClassCastException,  
:message  
“class clojure.lang.Keyword cannot be cast to class clojure.lang.Symbol (clojure.lang.Keyword and clojure.lang.Symbol are in unnamed module of loader ‘app’)”,  
:at [clojure.lang.Symbol compareTo “Symbol.java” 107]}],  
:trace  
[[clojure.lang.Symbol compareTo “Symbol.java” 107]  
[clojure.lang.Util compare “Util.java” 153]  
[clojure.lang.APersistentVector  
compareTo  
“APersistentVector.java”  
442]  
[clojure.lang.Util compare “Util.java” 153]  
[clojure.core$compare invokeStatic “core.clj” 842]  
[clojure.core$compare invoke “core.clj” 833]  
[clojure.lang.AFunction compare “AFunction.java” 51]  
[java.util.TimSort binarySort “TimSort.java” 296]  
[java.util.TimSort sort “TimSort.java” 221]  
[java.util.Arrays sort “Arrays.java” 1233]  
[clojure.core$sort invokeStatic “core.clj” 3116]  
[clojure.core$sort invokeStatic “core.clj” 3103]  
[clojure.core$sort invoke “core.clj” 3103]  
[clojure.tools.deps$sort\_paths invokeStatic “deps.clj” 568]  
[clojure.tools.deps$sort\_paths invoke “deps.clj” 564]  
[clojure.tools.deps$flatten\_libs invokeStatic “deps.clj” 585]  
[clojure.tools.deps$flatten\_libs invoke “deps.clj” 570]  
[clojure.tools.deps$make\_classpath\_map invokeStatic “deps.clj” 603]  
[clojure.tools.deps$make\_classpath\_map invoke “deps.clj” 591]  
[clojure.tools.deps$calc\_basis invokeStatic “deps.clj” 752]  
[clojure.tools.deps$calc\_basis invoke “deps.clj” 727]  
[clojure.tools.deps$create\_basis invokeStatic “deps.clj” 843]  
[clojure.tools.deps$create\_basis invoke “deps.clj” 787]  
[clojure.tools.deps.cli.api$prep invokeStatic “api.clj” 61]  
[clojure.tools.deps.cli.api$prep invoke “api.clj” 40]  
[clojure.lang.Var invoke “Var.java” 384]  
[clojure.run.exec$exec invokeStatic “exec.clj” 89]  
[clojure.run.exec$exec invoke “exec.clj” 78]  
[clojure.run.exec$\_main$fn\_\_219 invoke “exec.clj” 216]  
[clojure.run.exec$\_main invokeStatic “exec.clj” 212]  
[clojure.run.exec$\_main doInvoke “exec.clj” 180]  
[clojure.lang.RestFn applyTo “RestFn.java” 137]  
[clojure.lang.Var applyTo “Var.java” 705]  
[clojure.core$apply invokeStatic “core.clj” 667]  
[clojure.main$main\_opt invokeStatic “main.clj” 514]  
[clojure.main$main\_opt invoke “main.clj” 510]  
[clojure.main$main invokeStatic “main.clj” 664]  
[clojure.main$main doInvoke “main.clj” 616]  
[clojure.lang.RestFn applyTo “RestFn.java” 137]  
[clojure.lang.Var applyTo “Var.java” 705]  
[clojure.main main “main.java” 40]],  
:cause  
“class clojure.lang.Keyword cannot be cast to class clojure.lang.Symbol (clojure.lang.Keyword and clojure.lang.Symbol are in unnamed module of loader ‘app’)”}}

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [May 27, 2023, 1:08am UTC](https://clojureverse.org/t/java-lang-classcastexception-when-starting-a-new-clojurescript-project/10077/3 "2023-05-27T01:08:37Z")

</div>

> [@toshi-san](#):
>
> {:deps {:org.clojure/clojurescript {:mvn/version “1.11.60”}}  
> :paths [“src”]  
> }

Remove the `:` from `:org` – you want a symbol there, not a keyword (`org.clojure/clojurescript`, not `:org.clojure/clojurescript`).

---

<div class="post-metadata">

### Author: ![toshi-san](https://clojureverse.org/letter_avatar_proxy/v4/letter/t/8dc957/32.png) [@toshi-san](https://clojureverse.org/u/toshi-san)
#### Post date: [May 27, 2023, 1:21am UTC](https://clojureverse.org/t/java-lang-classcastexception-when-starting-a-new-clojurescript-project/10077/4 "2023-05-27T01:21:33Z")

</div>

@seancorfield Great, thank! It now works!!

After doing some research and reading ‘Learn ClojureScript’, I am also now trying seancorfield/clj-new package. This has created a new ClojureScript project working successfully. Thank you for a great template, seancorfield !

**deps.edn**

```auto
{:aliases
 {:new
  {:extra-deps
   {seancorfield/clj-new {:mvn/version "1.1.309"}}
   :exec-fn clj-new/create
   :exec-args {}}}}

```

**command to create a new project**

```auto
clj -X:new :template figwheel-main :name learn-cljs/weather :args '["+deps" "--reagent"]'

```

**start a new project**  
cd weather  
clj -M:fig:build

---

<div class="post-metadata">

### Author: ![system](https://clojureverse.org/uploads/default/original/2X/5/51079bf9e4b7d9466242c06cf1e43b9f8bd6da14.png) [@system](https://clojureverse.org/u/system)
#### Post date: [November 25, 2023, 1:21pm UTC](https://clojureverse.org/t/java-lang-classcastexception-when-starting-a-new-clojurescript-project/10077/5 "2023-11-25T13:21:53Z")

</div>

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.
