Как скомпилировать и импортировать Java-класс с помощью lein-figwheel?

#clojure #clojurescript #leiningen #clojure-java-interop #figwheel

#clojure #clojurescript #leiningen #clojure-java-interop #figwheel

Вопрос:

Я добавил :java-source-paths ["src/java"] в свой project.clj, работает lein uberjar, но при запуске lein figwheel я получаю следующую ошибку:

 Figwheel: Cutting some fruit, just a sec ...
Figwheel: Validating the configuration found in project.clj
Figwheel: Configuration Valid :)
java.lang.ClassNotFoundException: projectc.java.gcloud.DataStore, compiling:(projectc/gcloud/datastore.clj:1:1)
  

Я добавил это в раздел ‘: uberjar`

 :prep-tasks ["javac" "compile" ["cljsbuild" "once" "min"]]
  

Есть какие-либо подсказки о том, как это решить?

Комментарии:

1. Вы смотрели на это ?

2. На всякий случай, я полагаю, вы знаете, что figwheel обычно используется для запуска Clojurescript и, следовательно, Javascript, и что обычно Java не играет никакой роли в этом процессе, потому что Java не запускается в браузерах (если вы не делаете что-то вроде запуска апплета). Я полагаю, Java может играть определенную роль в figwheel, поскольку компилятор Clojurescript написан на Clojure, поэтому вы могли бы что-то делать с Java до / после / во время компиляции Clojurescript. Если вы уже знаете все это и знаете, что Java — это то, что вам нужно с figwheel в этом случае, игнорируйте это. Может быть, это поможет кому-то еще.

Ответ №1:

Когда Figwheel (и компилятор ClojureScript) компилирует ваш код, он обработает все предоставленные файлы clj для компиляции макросов, которые находятся в clj файлах. Похоже, что Figwheel пытается скомпилировать файл, в котором используется класс, которого нет в пути к классу? Возможно ли включить этот класс или исключить файл Clojure из компиляции Figwheel? Возможно, попробуйте создать этот Java-проект как JAR и включить его в качестве зависимости в качестве теста?

Это немного сложно определить с небольшим количеством информации, эта проблема также выглядит так, как будто она может быть актуальной?