Подтвердить что ты не робот

Как я могу запустить файл .clj Clojure, который я создал?

Я установил Geany на мой Linux Mint и написал простой код. Просто маленький мир привет, чтобы начать работу с языком.

Теперь я хотел бы запустить его и посмотреть, что он выводит.

Как я могу запустить этот код? Я не использую IDE или что-то, что было предварительно упаковано, просто простой текстовый редактор Geany.

Какую команду я должен выполнить?

4b9b3361

Ответ 1

Вы можете запустить script с помощью следующей команды:

java -cp clojure.jar clojure.main file.clj

но лучше использовать leiningen, особенно когда вы начнете добавлять зависимости к вашему проекту. lein предоставляет количество команд для запуска вашего кода (со всеми необходимыми зависимостями), код пакета в архив с помощью lein jar или создавать полные независимые архивы с lein uberjar, которые вы можете запускать с помощью:

java -jar your_app.jar

Команда

P.S. Вы можете прочитать, как использовать lein в в следующей статье - он описывает базовые задачи и конфигурации

Ответ 2

С clojure

Я не могу поверить, что никто этого не предложил. Вы должны просто сделать

clojure path/to/script.clj

Это работает с использованием clojure, установленного на Ubuntu с apt-get. Не уверен в других установках...

С lein-exec

Однако, если script, над которым вы работаете, имеет какие-либо зависимости, я бы рекомендовал плагин lein-exec. Это имеет то преимущество, что позволяет использовать Leiningen для обработки любых зависимостей, которые являются приятными. Leiningen уже имеет команду lein run, но работает только для выполнения основных функций в полном проекте Clojure/lein. Таким образом, плагин lein-exec - действительно приятное дополнение для небольших сценариев.

Сведения о зависимости...

Примечание. Для тщательности, если вы используете лейн, вы можете добавить любые библиотеки, которые вы хотели бы использовать в файл ~/.lein/profiles.clj, или в ваш файл project.clj, если вы работаете в проекте. Затем при запуске lein deps все зависимости будут установлены и доступны в ваших сценариях/проектах при использовании lein exec/lein run. Кроме того, lein repl предоставляет вам clojure repl с доступом к этим зависимостям. Опять же, определенно, путь, если у вас есть какие-либо зависимости в библиотеке.

В любом случае рассмотрите возможность использования drip для более быстрого запуска

Drip - это аккуратный инструмент, который предоставляет вам готовое к загрузке JVM-образ, готовый к запуску. Это может быть полезно для сокращения времени запуска приложений JVM. clojure может потребоваться довольно много времени для самонастройки, поэтому капельное приложение является хорошим инструментом для ускорения этого процесса. Это особенно характерно, когда вы пишете небольшие скрипты, с которыми обычно ожидают быстрого запуска. Если вы используете leiningen, посмотрите плагин lein-drip.

Для ClojureScript

Я бы рекомендовал http://planck-repl.org/. Теперь он поддерживает (загрузочный) быстрый запуск сценариев ClojureScript без необходимости запуска JVM или Clojure. Для большинства задач сценариев важно быстрое выполнение, поэтому, когда вам не нужна что-то конкретное для JVM, это моя рекомендация № 1.

Ответ 3

Как только вы установили lein и lein-exec плагин, запуск созданного файла .clj прост как

lein exec hello.clj

Если вы передаете аргументы командной строки, например

lein exec hello.clj arg1 arg2 arg3

вы можете получить к ним доступ в функции foo в hello.clj, например

(foo *command-line-args*) 

Ответ 4

Для одного файла clj, который вы можете добавить,

#!/usr/bin/env java -cp /path/to/clojure-1.2.0.jar clojure.main

в верхней части файла и сделать его исполняемым, или вы можете использовать leiningen, который является инструментом сборки clojure, он создаст одну банку, в которой есть все упакованное, тогда вы можете просто сделать,

java -jar cool_app.jar

Ответ 5

Drip, вероятно, теперь лучший ответ на этот вопрос (см. Drip wiki для получения подробной информации об использовании Drip с Clojure).

Торт был включен в Leiningen и с тех пор был заменен как наиболее стабильная реализация Clojure автоматизации Drip - см. этот ответ на аналогичный вопрос здесь.

Ответ 6

У меня была аналогичная проблема при запуске определенного файла clojure script из проекта clojure, используя lein. Затем я нашел ярлык, подумал об обмене тем же.

В файле project.clj вы можете переключить имя файла clojure script (у которого есть основной метод, конечно). Ниже приведена инструкция для этого.

:main ^:skip-aot conv.newconv ; here conv is namespace and newconv is the file name.

Примечание: Я новичок в clojure, и я не уверен, почему используется "^: skip-aot`, я не проверял это.

Примечание.. Эта методология не требует установки какого-либо плагина, и не нужно создавать какой-либо файл jar. Это требует только изменения имени в файле проекта.

Предположение: В проекте clojure есть несколько файлов clojure, каждый из которых имеет основной метод. Я предполагаю, что это создано только для целей тестирования. Мое решение будет работать для этого конкретного сценария.

Ответ 7

если вы просто хотите выполнить один файл, как насчет того, чтобы связать его с репликом, например:

cat $PATH_TO_FILE | lein repl