2013-09-28 36 views
1

我刚开始使用Clojure和从未使用过的JavaClojure的:使用库函数从REPL

我明白了如何创建和运行从终端leiningen项目,但我不明白如何加载图书馆REPL在运行命令之前。

我试图用clj-webdriver建立一个简单的web scrapler;我原来的文件看起来像这样

(ns prova.core (:gen-class)) 

(use 'clj-webdriver.taxi) 

(set-driver! {:browser :firefox}) 

(defn -main 
    [& args] 

    (to "https://github.com/login") 

    (input-text "#login_field" "email") 
    (input-text "#password"  "psw") 

    (click "input[name='commit']") 

) 

我(觉得)最近已经得到实现它打算进入webdriver的src文件夹,并尝试这个命令

[email protected]:~/clj-webdriver-master/src/clj_webdriver$ clojure 
Clojure 1.4.0 
user=> (use 'taxi) 

但它返回

FileNotFoundException Could not locate taxi__init.class or taxi.clj on classpath: clojure.lang.RT.load (RT.java:432) 

即使你在同一个文件夹中taxy.clj文件确实存在。

那么,运行可以使用库函数的REPL的过程是什么?

非常感谢

+1

就像一个笔记,如果你只想尝试一个库而不创建一个项目,你可以使用[lein-try](https://github.com/rkneufeld/lein-try)。一个非常酷的leiningen插件。 – izaban

回答

3

看看在leiningen构建工具,根据网站的说明进行安装,并作出新的项目。

lein new myproject 
cd myproject 

然后编辑project.clj在其中添加CLJ-的webdriver作为一个依赖:

(defproject myproject "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.5.1"] 
       [clj-webdriver "0.6.0"]]) 

然后键入lein repl和REPL会打滑了在classpath CLJ-的webdriver。你现在应该能够像你的例子那样继续。

+0

非常感谢!对于像我这样的其他新手:在你完成“lenin repl”(通常你会做“lenin run”)之后,REPL将在“defn -main”之前执行所有的代码,所以现在就像你正在输入和执行主要功能一行一行。您也可以复制/粘贴多行,然后按顺序处理。 – Sovos

+1

顶级表达式总是在加载代码时进行评估,并且通常不应包含副作用。将它们放入函数中并从REPL调用它们。 –