I have a defrecord called ConstraintLookup in the sre.plan.dsl.constraint namespace. I want to use its generated class in the gen-class method placed in the sre.plan.compiler namespace:
(ns sre.plan.compiler (:require [sre.plan.dsl.constraint :as constraint]) (:import (sre.plan.dsl.constraint ConstraintLookup)) (:gen-class :name sre.plan.Compiler :methods [^:static [makeConstraintLookupFromTargetsAndBounds [Iterable Iterable] ConstraintLookup]]))
I compile AOT with the nebula-clojure plugin and Gradle. The compiler throws an error when it encounters an ns declaration:
> Task :sre:compileClojure Exception in thread "main" java.lang.ClassNotFoundException: java.lang.ConstraintLookup, compiling:(sre/plan/compiler.clj:1:1)
Similarly, when using the full sre.plan.dsl.constraint.Constraint declaration in the method declaration, I get:
Exception in thread "main" java.lang.ClassNotFoundException: sre.plan.dsl.constraint.ConstraintLookup, compiling:(sre/plan/compiler.clj:1:1)
What is the problem? I am lost.
UPDATE:
The indicated ns are as follows:
(ns sre.plan.dsl.constraint (:require [clojure.set :refer :all] [clojure.algo.generic.functor :refer :all])) (defrecord ConstraintLookup [free bound])
UPDATE:
It seems to me that in a gen class you should use fully qualified class names no matter what. However, I still do not understand why the version with a fully qualified name does not work.
source share