2009-10-14 3 views
17

У меня есть проект clojure, который использует гладкий 2d-движок игры, который я пытаюсь запустить как исполняемый файл jar. Я создал проект как в Netbeans, так и в Eclipse, и мне не удавалось экспортировать их в исполняемый формат. Он продолжает давать ошибку, не может найти основной класс, а затем дать мой основной класс. Я пробовал редактировать файл манифеста, меняя имя в надежде, что он найдет его, но пока не повезло.Создание исполняемого файла jar из проекта clojure?

Он запускается в среде разработки, но не за ее пределами.

ответ

13

Прошло некоторое время с тех пор, как я опубликовал этот вопрос, и я подумал, что буду придерживаться того, что нашел, для тех, кто нуждается этот вопрос ответил.

Теперь я использую Leiningen для управления своими проектами, хотя я начал играть с cljr, который является менеджером пополнения и пакета, который его дополняет. Любой из них упрощает создание исполняемого файла jar.

Взяв Leiningen в качестве примера, настройте его с помощью инструкций на сайте, а затем позвоните по номеру lein new в рабочее пространство. Это создаст папку для размещения ваших проектов, а также подпапки для вашего источника и проверит файл readme и файл project.clj.

Редактировать project.clj с зависимостями, которые вы будете использовать. Dev-зависимости - это зависимости, которые вам нужны исключительно для разработки, такие как swank-clojure, показанные в приведенном ниже примере.

(defproject myproject "0.0.1-SNAPSHOT" 
    :description "My Personal Project." 
    :url "http://example.com/my-project" 
    :dependencies [[org.clojure/clojure "1.1.0"] 
       [org.clojure/clojure-contrib "1.1.0"] 
       [**other dependencies**]] 
    :dev-dependencies [[swank-clojure "1.2.1"]] 
    :main [org.myproject.core]) 

Я нахожу Суонк-Clojure полезно, как вы можете ввести lein swank для запуска экземпляра Суонк, который вы можете подключиться к с помощью Emacs.

: main определяет, какое пространство имен содержит функцию -main.

Вызов lein uberjar создаст автономную банку, которая затем будет работать.

Надеюсь, это поможет любому, у кого была моя проблема!

+0

'Ошибка: не удалось найти или загрузить основной класс [prueba.core]'. Я включил ': main' и его соответствующее значение, и у меня есть функция' -main', которая является общедоступной в этом пространстве имен. Любая идея о том, что может пойти не так? – m0skit0

+0

Привет @ m0skit0, прошло некоторое время с тех пор, как я написал это. Правильно ли вы структурировали свои каталоги? Под этим я подразумеваю ваш 'project.clj' в папке с' src', содержащей 'prueba', содержащей' core.clj'? Вы использовали 'lein new ', а затем отредактировали файл 'core.clj'? Если нет, не могли бы вы объяснить, что вы сделали как можно более ясно? – toofarsideways

+0

Структура проекта верна, потому что она создана Leiningen. Я, наконец, получил его для работы, используя следующий синтаксис ': main root.scriptlauncher: aot [root.scriptlauncher]' для 'defproject'. – m0skit0

3

Я должен был добавить clojure.jar и clojure-contrib.jar в качестве «зависимости» к проекту, чтобы заставить его быть включенным в банку. как только я понял, что смог запустить полученную банку. Имейте в виду, что Netbeans имеет свой собственный clojure.jar, который используется для запуска плагина самостоятельно, и это не обязательно должно быть тем же clojure.jar, что и ваша программа. В Netbeans есть меню для добавления библиотек. Вам нужно будет добавить clojure [-contrib] .jar для библиотек сборки и запуска.

+0

Я попытался добавить это как время компиляции и времени выполнения проекта, но пока не повезло. – toofarsideways

Смежные вопросы