Установка пути к классам и доступ к коду из книги: программирование Clojure - PullRequest
3 голосов
/ 26 ноября 2009

Я прошёл через Программирование Clojure и недавно скачал код с официального сайта книг. Для других утилит я могу сделать, например, (require 'clojure.contrib.str-utils), и это работает. Но как мне загрузить код из книги? (require 'examples.introduction) выдает следующее исключение:

java.io.FileNotFoundException: Could not locate examples/ introduction__init.class or examples/introduction.clj on classpath:
(NO_SOURCE_FILE:0)
  [Thrown class clojure.lang.Compiler$CompilerException]

Here is the full backtrace:

Backtrace:
  0: clojure.lang.Compiler.eval(Compiler.java:4543)
  1: clojure.core$eval__3990.invoke(core.clj:1728)
  2: swank.commands.basic$eval_region__686.invoke(basic.clj:36)
  3: swank.commands.basic$listener_eval__695.invoke(basic.clj:50)
  4: clojure.lang.Var.invoke(Var.java:346)
  5: user$eval__1200.invoke(NO_SOURCE_FILE)
  6: clojure.lang.Compiler.eval(Compiler.java:4532)
  7: clojure.core$eval__3990.invoke(core.clj:1728)
  8: swank.core$eval_in_emacs_package__307.invoke(core.clj:55)
  9: swank.core$eval_for_emacs__384.invoke(core.clj:123)
 10: clojure.lang.Var.invoke(Var.java:354)
 11: clojure.lang.AFn.applyToHelper(AFn.java:179)
 12: clojure.lang.Var.applyTo(Var.java:463)
 13: clojure.core$apply__3243.doInvoke(core.clj:390)
 14: clojure.lang.RestFn.invoke(RestFn.java:428)
 15: swank.core$eval_from_control__310.invoke(core.clj:62)
 16: swank.core$eval_loop__313.invoke(core.clj:67)
 17: swank.core$spawn_repl_thread__445$fn__476$fn__478.invoke(core.clj:
173)
 18: clojure.lang.AFn.applyToHelper(AFn.java:171)
 19: clojure.lang.AFn.applyTo(AFn.java:164)
 20: clojure.core$apply__3243.doInvoke(core.clj:390)
 21: clojure.lang.RestFn.invoke(RestFn.java:428)
 22: swank.core$spawn_repl_thread__445$fn__476.doInvoke(core.clj:170)
 23: clojure.lang.RestFn.invoke(RestFn.java:402)
 24: clojure.lang.AFn.run(AFn.java:37)
 25: java.lang.Thread.run(Unknown Source)

Я пытаюсь использовать Clojure Box и Enclojure в NetBeans в Windows XP. Это проблема classpath? Где мне разместить папку, содержащую код из книги? Пожалуйста, помогите мне с моими переменными настройками среды.

Ответы [ 2 ]

3 голосов
/ 23 декабря 2009

В книге предлагается использовать сценарии в каталоге bin. repl.sh или repl.bat, если вы прочитаете их, скажут вам, что нужно поместить в путь к классам, чтобы все работало. Если у вас возникли проблемы с настройкой пути к классу для Clojure или пониманием того, как структура пути соответствует структуре имен пространства имен, в SO есть много вопросов, где это объясняется; например см. мой ответ здесь . (Основы того, как сообщить java, какой путь к классу будет использоваться, будут зависеть от того, как вы его запустите, при необходимости найдите его в документации по NetBeans.)

Короче говоря, я бы посоветовал вам взять classpath из repl.sh / repl.bat и использовать его при запуске REPL с помощью выбранного вами метода. Или просто запустите REPL, используя соответствующий скрипт (в вашем случае это будет .bat версия.)

Наконец, не имеет значения, куда вы помещаете код, если вы соответственно указали путь к классам.

2 голосов
/ 23 марта 2010

Я прошёл через Программирование Clojure с использованием Enclojure в NetBeans. Чтобы использовать REPL Enclojure, я просто импортировал файлы JAR из кода книги в свой проект Clojure. Это включает

  1. все файлы JAR в lib/ каталог за исключением jline-0.9.94.jar
  2. файл JAR, который я создал вручную, содержащий каталог examples/ и его содержимое (PCexamples.jar на изображении ниже)

Libraries folder in NetBeans

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...