Не удалось найти компонент в classpath
Я пытаюсь использовать различные примеры для начала работы, и я могу получить базовый пример приветствия, работающий с базовым 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)
Ответы
Ответ 1
Как упоминается в комментарии W55tKQbuRu28Q4xv, во втором примере вы используете (:use compojure ...)
. Вы должны переключиться на (:use compojure.core ...)
, а затем, возможно, наложить дополнительные зависимости для других используемых вами функций (например, hiccup
(< - - это ссылка на репозиторий GitHub), который теперь является отдельным проектом для DSL для построения HTML).
Я предполагаю, что вы пытаетесь следовать некоторым учебникам, написанным для Compojure 0.3 при использовании Compojure 0.4. Последнее не включает в себя пространство имен compojure
вообще и значительно сократилось, причем основная обработка HTTP делегирована ring
и различные другие функциональные возможности, выделенные для отдельных проектов (например, вышеупомянутые hiccup
).
К счастью, имеются хорошие ресурсы для перехода 0,3 → 0,4, например. эта запись в блоге от Brenton Ashworth. Если вы не можете найти что-то, что было удалено из Compojure, скорее всего, вы сможете узнать, где его найти сейчас. См. Также это последующее обсуждение в группе Compojure Google для исправлений и дополнительных сведений.
Ответ 2
Я играл с Compojure "Hello World" и имел эту проблему (как и многие другие, которые путаются в моем мозгу). Еще одно осложнение заключается в том, что документация Compojure в Интернете уже устарела. Итог, это шаг, который вы хотите выполнить:
-
У вас есть обновленная версия Leiningen. Обязательно выполняйте инструкции по установке на сайте github. (Не проходите через macports, их Leiningen устарел.)
-
Следуйте инструкциям Compojure здесь.
Обратите внимание, что имя файла неверно. Это должно быть src/hello_www/core.clj NOT src/hello-www/core.clj.