Самый легкий способ управлять моим ПУТЕМ К КЛАССУ?

Я начинаю играть с Clojure немного, и мой опыт Java довольно ограничен. Я приезжаю из динамического мира Ruby и OO, таким образом, функциональная сторона вещей очень интересна!

Так или иначе, поскольку я обнаруживаю библиотеки и различные инструменты для использования (и учебные файлы для Прагматической Книги Clojure), все обычно призывает, чтобы помещающие файлы в ПУТИ К КЛАССУ для Clojure видели библиотеку для использования.

Есть ли такая вещь как хорошая практика ПУТИ К КЛАССУ? Я когда-либо хотел бы только иметь ПУТЬ К КЛАССУ только с внешними библиотеками файлов, в которых я нуждаюсь, или я могу идти вперед, бросают какую-либо библиотеку или файл, я когда-либо нуждался бы в каталоге и просто определял бы его как свой ПУТЬ К КЛАССУ и только требовал бы того, что необходимо?

Если это помогает, я - пользователь OSX и Emacs (Используя слизь и чванство-clojure).

5
задан mwilliams 23 December 2009 в 08:52
поделиться

7 ответов

Лично я использую вариант функции элиспа клоюра-проекта Фила Хагельберга, см. источник в этом посте к группе клоюра. Она устанавливает classpath, соответствующий проекту, над которым вы будете работать, затем запускает SLIME. (EDIT: Вам нужно изменить значение, которое присваивается swank-clojure-jar-path, чтобы указать на clojure.jar. По умолчанию я использую (имя расширяемого файла "~/.clojure/clojure.jar")

, чтобы ответить на вопрос о том, что на класспате все время есть все против того, чтобы бросать только то, что нужно: насколько мне известно, ничто на самом деле не сломается, если вы используете первый подход (я знаю, что делаю это в экспериментальных целях), но очевидно, что с первым подходом все может сломаться (см. комментарий cjstehno ниже), а в правильном проекте я считаю, что второй более чистый. В какой-то момент нужно будет определить, какие libs используются (и какие их версии), если только рассказать об этом Leiningen (или maven) -- почему бы не следить за ними, как вы идете.

.
2
ответ дан 13 December 2019 в 22:09
поделиться

Обычная практика CLASSPATH для Java состоит в том, чтобы помещать только файлы jar, необходимые для проекта, в этот путь к классам проектов, что означает наличие потенциально разных путей к классам для разных проектов. Обычно это управляется IDE как частью свойств проекта.

Поскольку вы используете Emacs и, следовательно, не имеете или не используете что-то вроде проектов, для вас может быть более удобным настроить и использовать один глобальный класс путь для всех ваших вещей, связанных с clojure, или, возможно, даже просто поместите все необходимые файлы jar в каталог java2se / jre / lib / ext вашей установки java.

Две основные проблемы, которые могут возникнуть из-за наличия ненужных файлов jar в вашем классе path: 1. он оказывает незначительное негативное влияние на время запуска JVM и 2.

1
ответ дан 13 December 2019 в 22:09
поделиться

Для этого я рекомендую использовать leiningen и lein-swank. Вы можете запустить REPL в каталоге и подключиться к нему из Emacs.

.
5
ответ дан 13 December 2019 в 22:09
поделиться

Мы используем Clojure и используем ряд инфраструктурных инструментов, особенно Eclipse (IDE) (http://en.wikipedia.org/wiki/Eclipse_%28software%29) и maven (http://en. wikipedia.org/wiki/Apache_Maven). maven управляет библиотеками и зависимостями jar, так что если у вас их несколько и они, скорее всего, вырастут, начните использовать maven.

В ответ на ваш оригинальный вопрос вы можете просто поместить ваши банки в один каталог и получать доступ к ним по имени каждый раз при запуске. Но вы извлечете выгоду из этих инструментов...

Если вы только что исследуете, то Eclipse, вероятно, будет управлять вашими банками довольно безболезненно. Вы можете добавить их в проект, как требуется, с помощью опции Build Path -> Configure Build Path (Настроить путь к банке).

По мере продвижения вашей работы вы, возможно, захотите разделить её на проекты, которые поддерживает Eclipse, чтобы вы могли добавить свои (или другие проекты) к пути сборки.

Если вы используете внешние библиотеки Clojure, посмотрите, не были ли они упакованы как maven-проекты (у них будет файл pom.xml). POM даст список зависимостей. #

1
ответ дан 13 December 2019 в 22:09
поделиться

Начиная с Java SE 1.6 (или JDK 1.6) вы можете включать записи путей классов по шаблону. Если файлы вашего класса живут в .\bin, а файлы вашей библиотеки jar живут в .\lib, то в Windows вы можете определить путь к вашему классу следующим образом:

set CLASSPATH=bin;lib\*;

Это позволит вам добавить jar-файлы в каталог .\lib и они будут автоматически добавлены в путь к классу для новых экземпляров JRE.

Смотрите эту ссылку для получения более подробной информации: Установка пути к классу

До JDK 1.6 вы должны были добавлять каждый jar-файл в ClassPath по отдельности.

1
ответ дан 13 December 2019 в 22:09
поделиться

Я только что обнаружил этот бит, который мне нужно попробовать:

(setq swank-clojure-extra-classpaths (список "/class/path/1" "/class/path/2" "/class/path/3" "etc"))

0
ответ дан 13 December 2019 в 22:09
поделиться

clojure-contrib/launchers/bash/clj-env-dir имеет интересное свойство, что вы можете направить его на каталог, и он, по сути, будет включать в себя все, что угодно. В прошлом у меня был каталог ~/classpath, в который я дамповал любые jars и связывал любые часто используемые каталоги, и он отлично работал. Очень простой способ дампа и использования. Сейчас я обычно использую Maven clojure-maven-plugin, и это работает хорошо, хотя это может быть немного утомительно, когда вы просто хотите поиздеваться над некоторыми идеями.

.
0
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: