I have a defrecord
called ConstraintLookup
in sre.plan.dsl.constraint
namespace.
I want to use its generated class in a gen-class
method placed on 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 am AOT compiling with nebula-clojure
plugin and Gradle. The compiler emits an error when it encounters the 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 fully qualified sre.plan.dsl.constraint.Constraint
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 here? I am lost.
UPDATE:
The referenced ns looks like this:
(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 gen-class you have to use fully qualified class names no matter what. However I still don't understand why doesn't the version with the fully qualified name work.