I am trying to call some Clojure code from Java, but I get this error when trying to "require" the file:
Could not locate proj/core__init.class, proj/core.clj or proj/core.cljc on classpath.
at clojure.lang.RT.load(RT.java:462)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6839.invoke(core.clj:6126)
at clojure.core$load.invokeStatic(core.clj:6125)
at clojure.core$load.doInvoke(core.clj:6109)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5908)
at clojure.core$load_one.invoke(core.clj:5903)
at clojure.core$load_lib$fn__6780.invoke(core.clj:5948)
at clojure.core$load_lib.invokeStatic(core.clj:5947)
at clojure.core$load_lib.doInvoke(core.clj:5928)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$load_libs.invokeStatic(core.clj:5985)
at clojure.core$load_libs.doInvoke(core.clj:5969)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$require.invokeStatic(core.clj:6007)
at clojure.core$require.doInvoke(core.clj:6007)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:384)
at proj.Main.main
The Clojure code is as follows:
(ns proj.core)
(defn foo
"I don't do a whole lot."
[x]
(println x "Hello, World!"))
and the java code:
package proj;
import clojure.java.api.Clojure;
import clojure.lang.IFn;
public class Main {
public static void main(String[] args) {
IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("proj.core"));
}
}
I've tried following this guide, for calling clojure code from java when the files are in the same project: https://push-language.hampshire.edu/t/calling-clojure-code-from-java/865
I've also seen this post, but it didn't help with my issue: Calling clojure from java
EDIT: Both files are in the same package
EDIT: The file system layout is as follows
D:.
│ first_try.iml
│ project.clj
│
├───src
│ └───proj
│ core.clj
│ Main.java
│
└───target
└───classes
└───proj
Main.class
Also, I am using the default IntelliJ Application configuration to run the app, and I have a Leiningen configuration as well for testing the Clojure functions directly from REPL