lein пользовательский класс Java не найден, исключение

Я получаю ClassNotFoundException, когда импортирую свой пользовательский класс Java в свой проект clojure.

;project.clj
(defproject subclass "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.8.0"]]
  :java-source-paths ["src/java"]
  :main subclass.core
  :aot [subclass.core]
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all}})

;src/subclass/core.clj
(ns subclass.core
    (:gen-class
     :extends BaseClass
     :exposes-methods {greet pgreet})
    (:import BaseClass))  ;This is being qualified as java.lang.BaseClass

(defn -main [& args])

//src/java/BaseClass.java
public class BaseClass {
    public String greet() {
        return "Hello from BaseClass";
    }
}

Когда я запускаю lein repl, я получаю следующую ошибку:

Compiling subclass.core
java.lang.ClassNotFoundException: java.lang.BaseClass, compiling:(subclass/core.clj:1:1)
Exception in thread "main" java.lang.ClassNotFoundException: java.lang.BaseClass, compiling:(subclas
s/core.clj:1:1)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6875)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        ... snip ...
        at clojure.lang.AFn.applyToHelper(AFn.java:156)
        at clojure.lang.Var.applyTo(Var.java:700)
        at clojure.main.main(main.java:37)
Caused by: java.lang.ClassNotFoundException: java.lang.Baseclass
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69)
        ... snip ...
        ... 54 more
Compilation failed: Subprocess failed

BaseClasss квалифицируется как java.lang.BaseClass, что терпит неудачу. Как будет ссылаться BaseClass из src/java? Спасибо.


person Community    schedule 15.12.2016    source источник
comment
Baseclass это не то же самое, что BaseClass.   -  person Jim Garrison    schedule 15.12.2016
comment
Извините, обновил пост.   -  person    schedule 15.12.2016
comment
Алан Томпсон: Спасибо, это работает.   -  person    schedule 15.12.2016
comment
@AlanThompson Пожалуйста, напишите это в ответе, чтобы мы могли закрыть этот вопрос.   -  person bfontaine    schedule 11.07.2017


Ответы (1)


Попробуйте поместить BaseClass в пакет. Java и Clojure не любят «голые» классы.

person Alan Thompson    schedule 17.07.2017