首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过访问jar启动clojure repl

如何通过访问jar启动clojure repl
EN

Stack Overflow用户
提问于 2012-06-26 07:25:24
回答 3查看 3.1K关注 0票数 8

我是clojure的新手。我有一个jar文件,我想在clojure repl中使用它,但在使用leiningen 2时失败了。

我尝试将jar文件放在src/myjar.jar和src/org/mydomain/myjar.jar中

当我运行lein repl时,我得到的错误是leiningen找不到我的工件,以及一个我不理解的关于可重复性的页面的引用。

这是我的project.clj (真名为myjar)

代码语言:javascript
运行
复制
(defproject cljliveordead "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.3.0"]
                 [org.allen.temporalintervalrelationships/time "0.2" :extension "jar"]])
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-12 21:54:04

您可以通过lein-localrepo插件使用本地jars。将此行添加到您的project.clj

代码语言:javascript
运行
复制
:plugins [[lein-localrepo "0.4.0"]]

然后使用以下命令将jar安装到本地存储库

代码语言:javascript
运行
复制
lein localrepo install <path-to-jar> org.allen.temporalintervalrelationships/time 0.2

您可以通过运行lein localrepo list来检查该文件是否已安装,并检查lein是否可以使用lein deps解析项目依赖关系。如果一切正常,那么您可以使用lein repl开始使用jar。

Leiningen不喜欢本地jars,因为它的目标是repeatable builds。如果这是一个使用第三方封闭源代码jar的真实项目,那么最好的做法是将其安装在本地Nexus存储库中,并将对该存储库的引用添加到您的项目中。

然而,对于你试图实现的目标来说,这一切似乎都有些重量级。如果您想要做的只是在REPL中使用jar,那么创建一个简单的项目,如下所示

代码语言:javascript
运行
复制
(defproject clojure-time "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [com.cemerick/pomegranate "0.0.13"]])

并使用pomegranate库手动将jar添加到类路径中

代码语言:javascript
运行
复制
(require '[cemerick.pomegranate :as p])
(p/add-classpath "jsr-310-ri-0.6.3.jar")
(javax.time.Instant/now)

玩得远远的。

票数 4
EN

Stack Overflow用户

发布于 2012-06-26 08:14:03

比较麻烦的方法是直接把它放到/proiject/path/lib/中,而“正确”的方法是:

  • 将其依赖项添加到您的项目中
  • 运行lein deps,这将打印用于将jar安装到本地maven存储库的命令
  • 运行leiningen提供的命令以及jar的路径
  • 运行lein deps

<代码>F210

票数 1
EN

Stack Overflow用户

发布于 2012-06-26 22:42:51

我在很多应用程序中使用clojure-csv,所以要确保引用clojure-csv的模块能够使用它进行构建,这就是我所做的:

0)运行lein new bene-csv

1)将其添加到project.clj (在输入lein new bene-csv之后)。相关的代码行是[clojure-csv/clojure-csv "1.3.2"],但是为了更好的例子,向您展示整个project.clj是有意义的。

代码语言:javascript
运行
复制
(defproject bene-csv "1.0.4-SNAPSHOT"
  :description "A csv parsing library"
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [clojure-csv/clojure-csv "1.3.2"]
                 [util "1.0.2-SNAPSHOT"]]


  :aot [bene-csv.core]
  :omit-source true)

2)确保我的bene-csv/src/bene_csv/core.clj引用clojure-csv。

代码语言:javascript
运行
复制
(ns bene-csv.core
  ^{:author "Charles M. Norton",
    :doc "bene-csv is a small library to parse a .csv file.
        Created on March 8, 2012"}
  (:require [clojure.string :as cstr])
  (:require [util.core :as utl])
  (:use clojure-csv.core))

最后,我运行了这些命令,以便我的主项目可以引用bene-csv的函数和defs。

代码语言:javascript
运行
复制
lein deps
lein install
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11198828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档