【问题标题】:rJava from Clojure来自 Clojure 的 rJava
【发布时间】:2016-10-31 18:12:46
【问题描述】:

我正在尝试将 Clojure 中的 R 与 rJava 一起使用,如 here 所示。我有以下内容:

(ns prototype.core
  (:gen-class)
  (:require [prototype.dataGraph :as dg])
  (:import [org.rosuda.JRI Rengine]))

(defn -main
  "Program main entry point."
  [& args]
  (new Rengine (into-array String ["--no-save"]) false nil)
  (println "Hello."))

然后,我得到了堆栈跟踪

找不到 JRI 原生库!请确保 JRI 本机 库位于 java.library.path 中列出的目录中。

java.lang.UnsatisfiedLinkError: java.library.path 中没有 jri

看来我没有正确指定库位置...

Java 构造函数是这样的:

Rengine engine = new Rengine(new String[] { "--no-save" }, false, null);

我的 project.clj 文件:

(defproject prototype "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.8.0"]]
  :plugins [[lein-expand-resource-paths "0.0.1"]]
  :resource-paths ["/usr/lib/R/site-library/rJava/jri/JRI.jar" "/usr/lib/R/site-library/rJava/jri/JRIEngine.jar" "/usr/lib/R/site-library/rJava/jri/REngine.jar"]
  :main ^:skip-aot prototype.core
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all}})

rJava 能否与 Clojure 一起成功使用?

【问题讨论】:

标签: r clojure rjava clojure-java-interop


【解决方案1】:

是的,所以问题是在 java.library.path 中未正确指定共享库。这有效:

(defproject prototype "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.8.0"]]
  :plugins [[lein-expand-resource-paths "0.0.1"]]
  :resource-paths ["/usr/lib/R/site-library/rJava/jri/JRI.jar" "/usr/lib/R/site-library/rJava/jri/JRIEngine.jar" "/usr/lib/R/site-library/rJava/jri/REngine.jar"]
  :jvm-opts [~(str "-Djava.library.path=/usr/lib/R/site-library/rJava/jri/:" (System/getenv "$LD_LIBRARY_PATH"))]
  :main ^:skip-aot prototype.core
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all}})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2023-03-11
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多