Не удалось найти compojure в classpath - PullRequest
10 голосов
/ 26 мая 2010

Я пробую различные примеры из Приступая к работе, и я могу получить базовый пример Hello World, работающий с базовым HTML в маршруте как таковом

(ns hello-world
  (:use compojure.core ring.adapter.jetty)
  (:require [compojure.route :as route]))

(defroutes example
  (GET "/" [] "<h1>Hello World Wide Web!</h1>"))

(run-jetty example {:port 8080})

Но когда я пытаюсь использовать html-помощники, вот так

(ns hello-world
  (:use compojure ring.adapter.jetty)
  (:require [compojure.route :as route]))

(defroutes example
  (GET "/" []
    (html [:h1 "Hello World"])))

(run-jetty example {:port 8080})

Тогда я получаю следующую ошибку

[null] Исключение в потоке "main" java.io.FileNotFoundException: не удалось найти compojure__init.class или compojure.clj на пути к классам: (core.clj: 1)

Ответы [ 2 ]

9 голосов
/ 26 мая 2010

Как упоминается в комментарии W55tKQbuRu28Q4xv, вы используете (:use compojure ...) во втором примере. Вам следует переключиться на (:use compojure.core ...), а затем, возможно, добавить некоторые дополнительные зависимости для других используемых вами функций (например, hiccup (<- это ссылка на репозиторий GitHub), которая теперь отдельный проект, для HTML-сборки DSL). </p>

Я предполагаю, что вы пытаетесь следовать некоторым учебникам, написанным для Compojure 0.3, при использовании Compojure 0.4. Последний вообще не включает в себя пространство имен compojure и значительно уменьшен, базовая обработка HTTP делегирована ring, а различные другие функциональные возможности выделены в отдельные проекты (например, вышеупомянутый hiccup).

К счастью, при переходе 0,3 -> 0,4 ​​имеются хорошие ресурсы, например, эта запись в блоге от Brenton Ashworth. Если вы не можете найти что-то, что было удалено из самой Compojure, скорее всего, вы сможете узнать, где найти это сейчас. См. Также это последующее обсуждение в группе Google Compojure для уточнений и дополнительных деталей.

1 голос
/ 26 мая 2010

Я играл с Compojure "Hello World", и у меня была эта проблема (как и многие другие, которые запутались в моем мозгу). Еще одно осложнение - большая часть документации Compojure в сети уже устарела. Итог, это шаг, которому вы хотите следовать:

  1. Имеют актуальную версию Leiningen . Обязательно следуйте инструкциям по установке на сайте github. ( не проходят через макпорты; их Leiningen устарел.)

  2. Следуйте инструкциям Compojure здесь .

Обратите внимание , что имя файла неверно. Это должен быть src / hello_www / core.clj, а не src / hello-www / core.clj.

...