babashka-sci-dev 2023-01-27

im trying to run bb locally with clojure -M -m babashka.main and see this error:

$ clojure -M -m babashka.main
Syntax error (ClassNotFoundException) compiling at (borkdude/deps.clj:1:1).
borkdude.deps
I have all the submodules cloned and there is no changes in the code. This is running on JDK 19 which i hope is not an issue? Same happens when I'm trying to ./script/uberjar. full error in ๐Ÿงต

โœ… 1

{:clojure.main/message
 "Syntax error (ClassNotFoundException) compiling at (borkdude/deps.clj:1:1).\nborkdude.deps\n",
 :clojure.main/triage
 {:clojure.error/phase :compile-syntax-check,
  :clojure.error/line 1,
  :clojure.error/column 1,
  :clojure.error/source "deps.clj",
  :clojure.error/path "borkdude/deps.clj",
  :clojure.error/class java.lang.ClassNotFoundException,
  :clojure.error/cause "borkdude.deps"},
 :clojure.main/trace
 {:via
  [{:type clojure.lang.Compiler$CompilerException,
    :message "Syntax error compiling at (borkdude/deps.clj:1:1).",
    :data
    {:clojure.error/phase :compile-syntax-check,
     :clojure.error/line 1,
     :clojure.error/column 1,
     :clojure.error/source "borkdude/deps.clj"},
    :at [clojure.lang.Compiler analyze "Compiler.java" 6825]}
   {:type java.lang.ClassNotFoundException,
    :message "borkdude.deps",
    :at
    [java.net.URLClassLoader findClass "URLClassLoader.java" 445]}],
  :trace
  [[java.net.URLClassLoader findClass "URLClassLoader.java" 445]
   [clojure.lang.DynamicClassLoader
    findClass
    "DynamicClassLoader.java"
    69]
   [java.lang.ClassLoader loadClass "ClassLoader.java" 588]
   [clojure.lang.DynamicClassLoader
    loadClass
    "DynamicClassLoader.java"
    77]
   [java.lang.ClassLoader loadClass "ClassLoader.java" 521]
   [java.lang.Class forName0 "Class.java" -2]
   [java.lang.Class forName "Class.java" 495]
   [java.lang.Class forName "Class.java" 474]
   [clojure.lang.RT classForName "RT.java" 2209]
   [clojure.lang.RT classForName "RT.java" 2218]
   [clojure.lang.Compiler resolveIn "Compiler.java" 7412]
   [clojure.lang.Compiler resolve "Compiler.java" 7375]
   [clojure.lang.Compiler analyzeSymbol "Compiler.java" 7336]
   [clojure.lang.Compiler analyze "Compiler.java" 6785]
   [clojure.lang.Compiler analyze "Compiler.java" 6762]
   [clojure.lang.Compiler$InvokeExpr parse "Compiler.java" 3900]
   [clojure.lang.Compiler analyzeSeq "Compiler.java" 7126]
   [clojure.lang.Compiler analyze "Compiler.java" 6806]
   [clojure.lang.Compiler analyze "Compiler.java" 6762]
   [clojure.lang.Compiler$BodyExpr$Parser parse "Compiler.java" 6135]
   [clojure.lang.Compiler$TryExpr$Parser parse "Compiler.java" 2326]
   [clojure.lang.Compiler analyzeSeq "Compiler.java" 7124]
   [clojure.lang.Compiler analyze "Compiler.java" 6806]
   [clojure.lang.Compiler analyze "Compiler.java" 6762]
   [clojure.lang.Compiler$BodyExpr$Parser parse "Compiler.java" 6137]
   [clojure.lang.Compiler$FnMethod parse "Compiler.java" 5479]
   [clojure.lang.Compiler$FnExpr parse "Compiler.java" 4041]
   [clojure.lang.Compiler analyzeSeq "Compiler.java" 7122]
   [clojure.lang.Compiler analyze "Compiler.java" 6806]
   [clojure.lang.Compiler analyzeSeq "Compiler.java" 7112]
   [clojure.lang.Compiler analyze "Compiler.java" 6806]
   [clojure.lang.Compiler analyze "Compiler.java" 6762]
   [clojure.lang.Compiler$InvokeExpr parse "Compiler.java" 3832]
   [clojure.lang.Compiler analyzeSeq "Compiler.java" 7126]
   [clojure.lang.Compiler analyze "Compiler.java" 6806]
   [clojure.lang.Compiler analyze "Compiler.java" 6762]
   [clojure.lang.Compiler$BodyExpr$Parser parse "Compiler.java" 6137]
   [clojure.lang.Compiler$FnMethod parse "Compiler.java" 5479]
   [clojure.lang.Compiler$FnExpr parse "Compiler.java" 4041]
   [clojure.lang.Compiler analyzeSeq "Compiler.java" 7122]
   [clojure.lang.Compiler analyze "Compiler.java" 6806]
   [clojure.lang.Compiler eval "Compiler.java" 7191]
   [clojure.lang.Compiler eval "Compiler.java" 7183]
   [clojure.lang.Compiler load "Compiler.java" 7653]
   [clojure.lang.RT loadResourceScript "RT.java" 381]
   [clojure.lang.RT loadResourceScript "RT.java" 372]
   [clojure.lang.RT load "RT.java" 459]
   [clojure.lang.RT load "RT.java" 424]
   [clojure.core$load$fn__8621 invoke "core.clj" 6161]
   [clojure.core$load invokeStatic "core.clj" 6160]
   [clojure.core$load doInvoke "core.clj" 6144]
   [clojure.lang.RestFn invoke "RestFn.java" 408]
   [clojure.core$load_one invokeStatic "core.clj" 5933]
   [clojure.core$load_one invoke "core.clj" 5928]
   [clojure.core$load_lib$fn__8563 invoke "core.clj" 5975]
   [clojure.core$load_lib invokeStatic "core.clj" 5974]
   [clojure.core$load_lib doInvoke "core.clj" 5953]
   [clojure.lang.RestFn applyTo "RestFn.java" 142]
   [clojure.core$apply invokeStatic "core.clj" 669]
   [clojure.core$apply invoke "core.clj" 662]
   [clojure.core$load_libs invokeStatic "core.clj" 6017]
   [clojure.core$load_libs doInvoke "core.clj" 6000]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.core$apply invokeStatic "core.clj" 669]
   [clojure.core$apply invoke "core.clj" 662]
   [clojure.core$require invokeStatic "core.clj" 6106]
   [clojure.core$require doInvoke "core.clj" 6038]
   [clojure.lang.RestFn invoke "RestFn.java" 457]
   [babashka.deps$eval11136$loading__8486__auto____11137
    invoke
    "deps.clj"
    1]
   [babashka.deps$eval11136 invokeStatic "deps.clj" 1]
   [babashka.deps$eval11136 invoke "deps.clj" 1]
   [clojure.lang.Compiler eval "Compiler.java" 7194]
   [clojure.lang.Compiler eval "Compiler.java" 7183]
   [clojure.lang.Compiler load "Compiler.java" 7653]
   [clojure.lang.RT loadResourceScript "RT.java" 381]
   [clojure.lang.RT loadResourceScript "RT.java" 372]
   [clojure.lang.RT load "RT.java" 459]
   [clojure.lang.RT load "RT.java" 424]
   [clojure.core$load$fn__8621 invoke "core.clj" 6161]
   [clojure.core$load invokeStatic "core.clj" 6160]
   [clojure.core$load doInvoke "core.clj" 6144]
   [clojure.lang.RestFn invoke "RestFn.java" 408]
   [clojure.core$load_one invokeStatic "core.clj" 5933]
   [clojure.core$load_one invoke "core.clj" 5928]
   [clojure.core$load_lib$fn__8563 invoke "core.clj" 5975]
   [clojure.core$load_lib invokeStatic "core.clj" 5974]
   [clojure.core$load_lib doInvoke "core.clj" 5953]
   [clojure.lang.RestFn applyTo "RestFn.java" 142]
   [clojure.core$apply invokeStatic "core.clj" 669]
   [clojure.core$apply invoke "core.clj" 662]
   [clojure.core$load_libs invokeStatic "core.clj" 6017]
   [clojure.core$load_libs doInvoke "core.clj" 6000]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.core$apply invokeStatic "core.clj" 669]
   [clojure.core$apply invoke "core.clj" 662]
   [clojure.core$require invokeStatic "core.clj" 6106]
   [clojure.core$require doInvoke "core.clj" 6038]
   [clojure.lang.RestFn invoke "RestFn.java" 3894]
   [babashka.main$eval2669$loading__1607__auto____2670
    invoke
    "main.clj"
    1]
   [babashka.main$eval2669 invokeStatic "main.clj" 1]
   [babashka.main$eval2669 invoke "main.clj" 1]
   [clojure.lang.Compiler eval "Compiler.java" 7194]
   [clojure.lang.Compiler eval "Compiler.java" 7183]
   [clojure.lang.Compiler load "Compiler.java" 7653]
   [clojure.lang.RT loadResourceScript "RT.java" 381]
   [clojure.lang.RT loadResourceScript "RT.java" 372]
   [clojure.lang.RT load "RT.java" 459]
   [clojure.lang.RT load "RT.java" 424]
   [clojure.core$load$fn__1742 invoke "core.clj" 6161]
   [clojure.core$load invokeStatic "core.clj" 6160]
   [clojure.core$load doInvoke "core.clj" 6144]
   [clojure.lang.RestFn invoke "RestFn.java" 408]
   [clojure.core$load_one invokeStatic "core.clj" 5933]
   [clojure.core$load_one invoke "core.clj" 5928]
   [clojure.core$load_lib$fn__1684 invoke "core.clj" 5975]
   [clojure.core$load_lib invokeStatic "core.clj" 5974]
   [clojure.core$load_lib doInvoke "core.clj" 5953]
   [clojure.lang.RestFn applyTo "RestFn.java" 142]
   [clojure.core$apply invokeStatic "core.clj" 669]
   [clojure.core$apply invoke "core.clj" 662]
   [clojure.core$load_libs invokeStatic "core.clj" 6017]
   [clojure.core$load_libs doInvoke "core.clj" 6000]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.core$apply invokeStatic "core.clj" 669]
   [clojure.core$require invokeStatic "core.clj" 6038]
   [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 "borkdude.deps",
  :phase :compile-syntax-check}}

its been a while but i do remember to be able to run this. its a bit baffling as this is exactly what the CI does!

ls deps.clj?

$ tree deps.clj
deps.clj
โ”œโ”€โ”€ CHANGELOG.md
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ appveyor.yml
โ”œโ”€โ”€ assets
โ”‚   โ””โ”€โ”€ windows-scoop.png
โ”œโ”€โ”€ bb
โ”‚   โ”œโ”€โ”€ artifact.clj
โ”‚   โ””โ”€โ”€ tasks.clj
โ”œโ”€โ”€ bb.edn
โ”œโ”€โ”€ deps.bat
โ”œโ”€โ”€ deps.clj
โ”œโ”€โ”€ deps.edn
โ”œโ”€โ”€ install
โ”œโ”€โ”€ install.ps1
โ”œโ”€โ”€ project.clj
โ”œโ”€โ”€ resources
โ”‚   โ”œโ”€โ”€ DEPS_CLJ_RELEASED_VERSION
โ”‚   โ””โ”€โ”€ DEPS_CLJ_VERSION
โ”œโ”€โ”€ script
โ”‚   โ”œโ”€โ”€ bump_version.clj
โ”‚   โ”œโ”€โ”€ changelog.clj
โ”‚   โ””โ”€โ”€ gen_script.clj
โ”œโ”€โ”€ src
โ”‚   โ””โ”€โ”€ borkdude
โ”‚       โ””โ”€โ”€ deps.clj
โ””โ”€โ”€ test
    โ””โ”€โ”€ borkdude
        โ”œโ”€โ”€ deps_test.clj
        โ””โ”€โ”€ exec_test.clj

clj
(require '[borkdude.deps])

that works

i did make sure of the cp too when trying to debug

$ clojure -M -m babashka.main
Babashka v1.1.173-SNAPSHOT REPL.
Use :repl/quit or :repl/exit to quit the REPL.
Clojure rocks, Bash reaches.

user=>

yep i remember that working for me too, will try some more things

did you suddenly switch to another jdk?

well on this machine its JDK 19 temurin, didnt change that for a while.

borkdude@m1 ~/dev/babashka (master) $ export GRAALVM_HOME=~/Downloads/graalvm-ce-java19-22.3.0/Contents/Home
borkdude@m1 ~/dev/babashka (master) $ export JAVA_HOME=$GRAALVM_HOME
borkdude@m1 ~/dev/babashka (master) $ clj
Clojure 1.11.1
user=> (System/getProperty "java.version")
"19.0.1"
user=>
borkdude@m1 ~/dev/babashka (master) $ clojure -M -m babashka.main
Babashka v1.1.173-SNAPSHOT REPL.
Use :repl/quit or :repl/exit to quit the REPL.
Clojure rocks, Bash reaches.

user=>

yeah i'll investigate a more and report back, seems like a weird thing

maybe try a fresh clone

rm -rf ~/.m2 then it all magically works ๐Ÿคท๐Ÿพ facepalm

one day i'll understand how classpath truly works. thanks for the help anyways

Perhaps upgrade the clojure CLI if you haven't got the latest

it has better detection of staleness nowadays

also -Sforce might help next time