NehaM
NehaM

Reputation: 1352

Lein install/uberjar fails when trying to use a class from dependency with gen-class

Getting ClassNotFoundException when i use a class from second order dependency. when i run lein uberjar or install it fails with

java.lang.ClassNotFoundException: incanter.core.Dataset, compiling:(myproject/routes/evaluate.clj:1:1). 

However, it gets compiled.

Exception in thread "main" java.lang.ClassNotFoundException: incanter.core.Dataset, compiling:(myproject/routes/evaluate.clj:1:1)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6730)
        at clojure.lang.Compiler.analyze(Compiler.java:6524)
        at clojure.lang.Compiler.analyze(Compiler.java:6485)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5861)
        at clojure.lang.Compiler$TryExpr$Parser.parse(Compiler.java:2261)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6723)
        at clojure.lang.Compiler.analyze(Compiler.java:6524)

My project.clj file (selected part)

(defproject myproject"0.2.2-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.7.0"]
               [grafter "0.7.0"]]
)

The incanter.core.Dataset is used by grafter:0.7.0.

My clojure file where i use it is myproject/routes/evaluate.clj

(ns myproject.routes.evaluate
(:gen-class
    :name myproject.routes.evaluate
    :prefix "service-"
    :methods [^:static [executePipeline [java.lang.String java.lang.String java.lang.String] incanter.core.Dataset]]))

(defn service-executePipeline [data command pipeline]   
  (execute-pipeline data command pipeline))

I have went through few posts relate to gen-class and aot solutions. Nothing was useful. I am quiet new to Clojure. I am not completely sure what's happening. Can i solve this issue? What am i doing wrong?

Upvotes: 3

Views: 361

Answers (0)

Related Questions