The org.babashka/tools-deps-native "0.1.2" used on bb.end is causing problems while running bb http-server-uber to generate the jar file for datahike.http.server as it is described in the documentation.
Exception while calling bb http-server-uber:
Cleaning up target directory 'target-http-server'...Done.
----- Error --------------------------------------------------------------------
Type: clojure.lang.ExceptionInfo
Message: No matching method equals found taking 1 args for class java.io.File
Data: {:type "class java.lang.IllegalArgumentException"}
Location: /Users/bruno.nascimento/.gitlibs/libs/io.github.babashka/tools.bbuild/73e4d0a26c65cdf1d4c7bf7e9e46e6e5f1978a37/src/main/clojure/clojure/tools/build/util/pod.clj:1:29
----- Context ------------------------------------------------------------------
1: (ns clojure.tools.build.util.pod
^--- No matching method equals found taking 1 args for class java.io.File
2: (:require [clojure.string :as str]))
3:
4: (def windows? (str/starts-with?
5: (System/getProperty "os.name")
6: "Windows"))
----- Stack trace --------------------------------------------------------------
babashka.pods.impl/processor - <built-in>
babashka.pods.sci/load-pod/fn--26975 - <built-in>
clojure.tools.deps/create-basis - /Users/bruno.nascimento/.gitlibs/libs/io.github.babashka/tools.bbuild/73e4d0a26c65cdf1d4c7bf7e9e46e6e5f1978a37/src/main/clojure/clojure/tools/build/util/pod.clj:1:29
clojure.tools.deps/create-basis - /Users/bruno.nascimento/.gitlibs/libs/io.github.babashka/tools.bbuild/73e4d0a26c65cdf1d4c7bf7e9e46e6e5f1978a37/src/main/clojure/clojure/tools/build/util/pod.clj:1:1
clojure.tools.build.tasks.create-basis - /Users/bruno.nascimento/.gitlibs/libs/io.github.babashka/tools.bbuild/73e4d0a26c65cdf1d4c7bf7e9e46e6e5f1978a37/src/main/clojure/clojure/tools/build/tasks/create_basis.clj:30:6
... (run with --debug to see elided elements)
tools.build - /Users/bruno.nascimento/Documents/personal-projects/datahike/bb/src/tools/build.clj:24:21
clojure.tools.build.api/javac - /Users/bruno.nascimento/.gitlibs/libs/io.github.babashka/tools.bbuild/73e4d0a26c65cdf1d4c7bf7e9e46e6e5f1978a37/src/main/clojure/clojure/tools/build/api.clj:320:1
tools.build/compile-java - /Users/bruno.nascimento/Documents/personal-projects/datahike/bb/src/tools/build.clj:22:4
tools.build/compile-java - /Users/bruno.nascimento/Documents/personal-projects/datahike/bb/src/tools/build.clj:18:1
user-ce2c7348-f79c-4c30-8d89-11031dde2018 - <expr>:31:1
Compiling Java classes saving them to 'target-http-server/classes'...%
After downgrading org.babashka/tools-deps-native "0.1.2" to org.babashka/tools-deps-native "0.1.1" I was able to generate the jar file. But when I try to run the file I got another exception related with the resources/datahike-logo.txt not being loaded in to the jar file.
Exception while executing the compiled jar (java -jar target-http-server/datahike-http-server-0.6.1566.jar resources/example_server.edn):
Warning: environ value /Users/bruno.nascimento/.jenv/versions/1.8 for key :java-home has been overwritten with /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2209)
at clojure.lang.RT.classForName(RT.java:2218)
at clojure.lang.RT.loadClassForName(RT.java:2237)
at clojure.lang.RT.load(RT.java:449)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:457)
at datahike.datom$loading__6789__auto____23349.invoke(datom.cljc:1)
at datahike.datom__init.load(Unknown Source)
at datahike.datom__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2209)
at clojure.lang.RT.classForName(RT.java:2218)
at clojure.lang.RT.loadClassForName(RT.java:2237)
at clojure.lang.RT.load(RT.java:449)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:1096)
at datahike.index.persistent_set$loading__6789__auto____23237.invoke(persistent_set.cljc:1)
at datahike.index.persistent_set__init.load(Unknown Source)
at datahike.index.persistent_set__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2209)
at clojure.lang.RT.classForName(RT.java:2218)
at clojure.lang.RT.loadClassForName(RT.java:2237)
at clojure.lang.RT.load(RT.java:449)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at datahike.index$loading__6789__auto____22987.invoke(index.cljc:1)
at datahike.index__init.load(Unknown Source)
at datahike.index__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2209)
at clojure.lang.RT.classForName(RT.java:2218)
at clojure.lang.RT.loadClassForName(RT.java:2237)
at clojure.lang.RT.load(RT.java:449)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:805)
at datahike.store$loading__6789__auto____16076.invoke(store.cljc:1)
at datahike.store__init.load(Unknown Source)
at datahike.store__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2209)
at clojure.lang.RT.classForName(RT.java:2218)
at clojure.lang.RT.loadClassForName(RT.java:2237)
at clojure.lang.RT.load(RT.java:449)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:703)
at datahike.json$loading__6789__auto____29903.invoke(json.cljc:1)
at datahike.json__init.load(Unknown Source)
at datahike.json__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2209)
at clojure.lang.RT.classForName(RT.java:2218)
at clojure.lang.RT.loadClassForName(RT.java:2237)
at clojure.lang.RT.load(RT.java:449)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:551)
at datahike.http.middleware$loading__6789__auto____37795.invoke(middleware.clj:1)
at datahike.http.middleware__init.load(Unknown Source)
at datahike.http.middleware__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2209)
at clojure.lang.RT.classForName(RT.java:2218)
at clojure.lang.RT.loadClassForName(RT.java:2237)
at clojure.lang.RT.load(RT.java:449)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:3894)
at datahike.http.server$loading__6789__auto____37793.invoke(server.clj:1)
at datahike.http.server__init.load(Unknown Source)
at datahike.http.server__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2209)
at clojure.lang.RT.classForName(RT.java:2218)
at clojure.lang.RT.loadClassForName(RT.java:2237)
at clojure.lang.RT.load(RT.java:449)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:384)
at clojure.lang.Util.loadWithClass(Util.java:251)
at datahike.http.server.<clinit>(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Cannot open <nil> as a Reader.
at clojure.java.io$fn__11641.invokeStatic(io.clj:288)
at clojure.java.io$fn__11641.invoke(io.clj:288)
at clojure.java.io$fn__11530$G__11519__11537.invoke(io.clj:69)
at clojure.java.io$reader.invokeStatic(io.clj:102)
at clojure.java.io$reader.doInvoke(io.clj:86)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$slurp.invokeStatic(core.clj:7009)
at clojure.core$slurp.doInvoke(core.clj:7009)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at datahike.tools__init.load(Unknown Source)
at datahike.tools__init.<clinit>(Unknown Source)
... 210 more
In order to fix the second problem I had to add the resources directory to :src-dirshere.
What is the expected behaviour?
While executing bb http-server-uber I was expecting it to generate a jar file in order to use the server feature.
And after generating the jar file I was expecting to test it executing with the config exemple file without gettin any exception.
How can the behaviour be reproduced?
Clone the project repository on local machine and run bb http-server-uber (This will reproduce the first problem).
For the second one you should bump org.babashka/tools-deps-native from 0.1.2 to 0.1.1, build the jar file with bb http-server-uber and try to run it against the configuration example file java -jar target-http-server/datahike-http-server-0.6.1566.jar resources/example_server.edn
What version of Datahike are you using?
0.6.1557
What version of Java are you using?
openjdk 21.0.1 2023-10-17
What operating system are you using?
MacOS
What database EDN configuration are you using?
{:port 4444 :level :debug :dev-mode true :token "securerandompassword"}
Describe the bug
The
org.babashka/tools-deps-native "0.1.2"
used onbb.end
is causing problems while runningbb http-server-uber
to generate the jar file fordatahike.http.server
as it is described in the documentation.Exception while calling
bb http-server-uber
:After downgrading
org.babashka/tools-deps-native "0.1.2"
toorg.babashka/tools-deps-native "0.1.1"
I was able to generate the jar file. But when I try to run the file I got another exception related with theresources/datahike-logo.txt
not being loaded in to the jar file.Exception while executing the compiled jar (
java -jar target-http-server/datahike-http-server-0.6.1566.jar resources/example_server.edn
):In order to fix the second problem I had to add the
resources
directory to:src-dirs
here.What is the expected behaviour?
While executing
bb http-server-uber
I was expecting it to generate a jar file in order to use the server feature. And after generating the jar file I was expecting to test it executing with the config exemple file without gettin any exception.How can the behaviour be reproduced?
Clone the project repository on local machine and run
bb http-server-uber
(This will reproduce the first problem).For the second one you should bump
org.babashka/tools-deps-native
from0.1.2
to0.1.1
, build the jar file withbb http-server-uber
and try to run it against the configuration example filejava -jar target-http-server/datahike-http-server-0.6.1566.jar resources/example_server.edn