Я получаю FileNotFoundException
в Clojure REPL при попытке использовать внешнюю библиотеку. Например, я создаю новый проект с lein new example-twitter-project
. Затем я редактирую файлы:
project.clj
:
(defproject example-twitter-project "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.3.0"]
[clojure-twitter "1.2.6-SNAPSHOT"]])
src/example-twitter-project/core.clj
:
(ns example-twitter-project.core
(:use 'twitter))
Затем я запускаю lein deps
, а затем lein repl
.
example-twitter-project$ lein repl
REPL started; server listening on localhost port 23833
user=> (use :reload-all 'example-twitter-project.core)
FileNotFoundException Could not locate quote/twitter__init.class or quote/twitter.clj on classpath: clojure.lang.RT.load (RT.java:430)
В то же время я могу use
напрямую подключить внешнюю библиотеку из REPL:
user=> (use 'twitter)
nil
user=> (doc twitter/with-oauth)
-------------------------
twitter/with-oauth
([consumer access-token access-token-secret & body])
Macro
Set the OAuth access token to be used for all contained Twitter requests.
nil
Что я должен сделать, чтобы использовать эту внешнюю библиотеку в проекте?
Если я добавлю -main
функцию и попытаюсь запустить скрипт, я получу аналогичный FileNotFoundException
, так что это не только проблема REPL.
Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: Could not locate quote/twitter__init.class or quote/twitter.clj on classpath:
at clojure.lang.Util.runtimeException(Util.java:165)
...
Caused by: java.io.FileNotFoundException: Could not locate quote/twitter__init.class or quote/twitter.clj on classpath:
at clojure.lang.RT.load(RT.java:430)
...
Обратите внимание, что имя библиотеки и ее пространство имен разные. Может ли это быть причиной?
P.S. lein version
: Leiningen 1.7.1 на Java 1.6.0_24 64-разрядная серверная виртуальная машина OpenJDK