Likepineapple
Likepineapple

Reputation: 585

Clojure doesn't find dependencies

I've got a problem with Clojure. I want to install neanderthal but each time I try to compile my program I get this error.

; Syntax error compiling at (uncomplicate\neanderthal\native.clj:1:1).
; No namespace: uncomplicate.neanderthal.internal.host.mkl

The first lines of my program

(ns learning.core
  (:gen-class)
  (:use [uncomplicate.neanderthal core native]))

EDIT: additional info

project code

(defproject learning "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
            :url "https://www.eclipse.org/legal/epl-2.0/"}
  :dependencies [[org.clojure/clojure "1.10.1"]
                 [uncomplicate/neanderthal "0.40.0"]
                 [clj-http "2.0.0"]]

  :main ^:skip-aot learning.core
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all
                       :jvm-opts ["-Dclojure.compiler.direct-linking=true"]}})

deps.end

{:deps
 {uncomplicate/neanderthal {:mvn/version "0.40.0"}}}

This file should be included in the same directory as project.clj?

I see that the problem has something to do with lein not being able to find the library. That's the error that I get when I try to run lein repl

    PS C:\Users\mikol\Documents\Clojure\learning> lein repl
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    #error {
     :cause C:\Users\mikol\AppData\Local\Temp\neanderthal-mkl-0.33.04368029947196620199.dll: Can't find dependent libraries
     :via
     [{:type clojure.lang.Compiler$CompilerException
       :message Syntax error macroexpanding at (mkl.clj:90:35).
       :data #:clojure.error{:phase :execution, :line 90, :column 35, :source mkl.clj}
       :at [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3707]}
      {:type java.lang.UnsatisfiedLinkError
       :message C:\Users\mikol\AppData\Local\Temp\neanderthal-mkl-0.33.04368029947196620199.dll: Can't find dependent libraries
       :at [java.lang.ClassLoader$NativeLibrary load nil -2]}]
     :trace
     [[java.lang.ClassLoader$NativeLibrary load nil -2]
      [java.lang.ClassLoader loadLibrary0 nil -1]
      [java.lang.ClassLoader loadLibrary nil -1]
      [java.lang.Runtime load0 nil -1]
      [java.lang.System load nil -1]
[uncomplicate.neanderthal.internal.host.NarSystem loadLibrary NarSystem.java 48]
  [uncomplicate.neanderthal.internal.host.MKL <clinit> MKL.java 16]
  [uncomplicate.neanderthal.internal.host.mkl$create_stream_ars5 invokeStatic mkl.clj 87]
  [uncomplicate.neanderthal.internal.host.mkl$create_stream_ars5 invoke mkl.clj 85]
  [clojure.lang.AFn applyToHelper AFn.java 154]
  [clojure.lang.AFn applyTo AFn.java 144]
  [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3702]
  [clojure.lang.Compiler$DefExpr eval Compiler.java 457]
  [clojure.lang.Compiler eval Compiler.java 7182]
  [clojure.lang.Compiler load Compiler.java 7636]
  [clojure.lang.RT loadResourceScript RT.java 381]
  [clojure.lang.RT loadResourceScript RT.java 372]
  [clojure.lang.RT load RT.java 459]
  [clojure.lang.RT load RT.java 424]
  [clojure.core$load$fn__6839 invoke core.clj 6126]
  [clojure.core$load invokeStatic core.clj 6125]
  [clojure.core$load doInvoke core.clj 6109]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5908]
  [clojure.core$load_one invoke core.clj 5903]
  [clojure.core$load_lib$fn__6780 invoke core.clj 5948]
  [clojure.core$load_lib invokeStatic core.clj 5947]
  [clojure.core$load_lib doInvoke core.clj 5928]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 667]
  [clojure.core$load_libs invokeStatic core.clj 5989]
  [clojure.core$load_libs doInvoke core.clj 5969]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 667]
  [clojure.core$require invokeStatic core.clj 6007]
  [clojure.core$require doInvoke core.clj 6007]
  [clojure.lang.RestFn invoke RestFn.java 436]
  [uncomplicate.neanderthal.native$eval4770$loading__6721__auto____4771 invoke native.clj 9]
  [uncomplicate.neanderthal.native$eval4770 invokeStatic native.clj 9]
  [uncomplicate.neanderthal.native$eval4770 invoke native.clj 9]
  [clojure.lang.Compiler eval Compiler.java 7177]
  [clojure.lang.Compiler eval Compiler.java 7166]
  [clojure.lang.Compiler load Compiler.java 7636]
  [clojure.lang.RT loadResourceScript RT.java 381]
  [clojure.lang.RT loadResourceScript RT.java 372]
  [clojure.lang.RT load RT.java 459]
  [clojure.lang.RT load RT.java 424]
  [clojure.core$load$fn__6839 invoke core.clj 6126]
  [clojure.core$load invokeStatic core.clj 6125]
  [clojure.core$load doInvoke core.clj 6109]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5908]
  [clojure.core$load_one invoke core.clj 5903]
  [clojure.core$load_lib$fn__6780 invoke core.clj 5948]
  [clojure.core$load_lib invokeStatic core.clj 5947]
  [clojure.core$load_lib doInvoke core.clj 5928]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 667]
  [clojure.core$load_libs invokeStatic core.clj 5989]
  [clojure.core$load_libs doInvoke core.clj 5969]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 669]
  [clojure.core$use invokeStatic core.clj 6093]
  [clojure.core$use doInvoke core.clj 6093]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [learning.core$eval149$loading__6721__auto____150 invoke core.clj 1]
  [learning.core$eval149 invokeStatic core.clj 1]
  [learning.core$eval149 invoke core.clj 1]
  [clojure.lang.Compiler eval Compiler.java 7177]
  [clojure.lang.Compiler eval Compiler.java 7166]
  [clojure.lang.Compiler load Compiler.java 7636]
  [clojure.lang.RT loadResourceScript RT.java 381]
  [clojure.lang.RT loadResourceScript RT.java 372]
  [clojure.lang.RT load RT.java 459]
  [clojure.lang.RT load RT.java 424]
  [clojure.core$load$fn__6839 invoke core.clj 6126]
  [clojure.core$load invokeStatic core.clj 6125]
  [clojure.core$load doInvoke core.clj 6109]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5908]
  [clojure.core$load_one invoke core.clj 5903]
  [clojure.core$load_lib$fn__6780 invoke core.clj 5948]
  [clojure.core$load_lib invokeStatic core.clj 5947]
  [clojure.core$load_lib doInvoke core.clj 5928]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 667]
  [clojure.core$load_libs invokeStatic core.clj 5985]
  [clojure.core$load_libs doInvoke core.clj 5969]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 667]
  [clojure.core$require invokeStatic core.clj 6007]
  [clojure.core$require doInvoke core.clj 6007]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [user$eval5 invokeStatic form-init6219684087710879613.clj 1]
  [user$eval5 invoke form-init6219684087710879613.clj 1]
  [clojure.lang.Compiler eval Compiler.java 7177]
  [clojure.lang.Compiler eval Compiler.java 7166]
  [clojure.lang.Compiler eval Compiler.java 7166]
  [clojure.lang.Compiler load Compiler.java 7636]
  [clojure.lang.Compiler loadFile Compiler.java 7574]
  [clojure.main$load_script invokeStatic main.clj 475]
  [clojure.main$init_opt invokeStatic main.clj 477]
  [clojure.main$init_opt invoke main.clj 477]
  [clojure.main$initialize invokeStatic main.clj 508]
  [clojure.main$null_opt invokeStatic main.clj 542]
  [clojure.main$null_opt invoke main.clj 539]
  [clojure.main$main invokeStatic main.clj 664]
  [clojure.main$main doInvoke main.clj 616]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.lang.Var applyTo Var.java 705]
  [clojure.main main main.java 40]]}

Upvotes: 0

Views: 513

Answers (1)

Likepineapple
Likepineapple

Reputation: 585

The problem was a missing dependency. Adding [org.bytedeco/mkl-platform-redist "2020.3-1.5.4"] to my project.clj solved the issue.

Upvotes: 2

Related Questions