【问题标题】:Datomic Jetty Compiler Exception (in compojure-api project)Datomic Jetty 编译器异常(在 compojure-api 项目中)
【发布时间】:2019-02-11 19:13:11
【问题描述】:

Clojure 新手在这里。我正在尝试将 datomic 集成到 compojure-api 项目中。码头有冲突,所以基于docs,我的project.clj看起来像这样,这使它现在可以在我做lein ring server时工作

 (defproject dice-api "0.1.0-SNAPSHOT"
   :description "FIXME: write description"
   :dependencies [[org.clojure/clojure "1.8.0"]
                  [metosin/compojure-api "1.1.11"]
                  [com.datomic/client-pro "0.8.28"
                   :exclusions [org.eclipse.jetty/jetty-client
                               org.eclipse.jetty/jetty-http
                               org.eclipse.jetty/jetty-util]]]
   :ring {:handler dice-api.handler/app}
   :uberjar-name "server.jar"
   :profiles {:dev {:dependencies [[javax.servlet/javax.servlet-api "3.1.0"]]
                   :plugins [[lein-ring "0.12.0"]]}})

但是,我现在无法在 repl 中使用 datomic(并且当我在我的 compojure-api 端点中调用它时可能不会工作)。

➜  dice-api lein repl
...
user=> (require '[datomic.client.api :as d])
nil
user=> (def local-cfg {:server-type :peer-server
  #_=>                  :access-key "blahblahblah"
  #_=>                  :secret "blahblahblah"
  #_=>                  :endpoint "localhost:8998"})
#'user/local-cfg
user=> (defn client [cfg]
  #_=>   (d/client cfg))
#'user/client
user=> (def conn (d/connect (client local-cfg) {:db-name "hello"}))

CompilerException java.lang.ClassNotFoundException: org.eclipse.jetty.client.HttpClient, compiling:(cognitect/http_client.clj:1:1)

如何整合datomiccompojure-api

【问题讨论】:

    标签: clojure datomic


    【解决方案1】:

    我没有使用您的确切组合,但它可能有助于克隆 the Tupelo Datomic project。它是一个使用 Datomic Free 的独立项目,并且是完全独立的。克隆 repo,你应该可以像这样运行lein test

    ~/tupelo-datomic > 
    ~/tupelo-datomic > lein clean
    ~/tupelo-datomic > lein test
    
    WARNING: find already refers to: #'clojure.core/find in namespace: tupelo-datomic.core, being replaced by: #'tupelo-datomic.core/find
    *clojure-version* => {:major 1, :minor 10, :incremental 0, :qualifier nil}
    
    lein test tst.tupelo-datomic._bootstrap
    
    -------------------------------
       Clojure 1.10.0    Java 11
    -------------------------------
    
    lein test tst.tupelo-datomic.bond
    
    lein test tst.tupelo-datomic.bond-query
    
    lein test tst.tupelo-datomic.core
    
    lein test tst.tupelo-datomic.find
    
    lein test tst.tupelo-datomic.functionality
    
    lein test tst.tupelo-datomic.quick-start
    :using-local
    
    Ran 17 tests containing 110 assertions.
    0 failures, 0 errors.
    ~/tupelo-datomic > 
    

    由于它是完全独立的,你应该可以添加任何你想要的网络框架。

    【讨论】:

    • 我可以反过来做吗?在我现有项目的project.clj 中添加tupelo-datomic?我试过了,我得到了:Retrieving org/clojure/clojure/1.7.0/clojure-1.7.0.jar from central Could not find artifact com.datomic:datomic-pro:jar:0.9.5359 in central (https://repo1.maven.org/maven2/)...
    • 尝试删除你的project.clj中所有对datomic的引用
    • 在我的project.clj 中只有一个引用,即tupelo-datomic。我会再试一次,但我已经转到pedestal,它与datomic 配合得很好。谢谢你的帮助:)。
    • 我的意思是:[com.datomic/client-pro "0.8.28" ...]。顺便说一句,我也更喜欢底座作为我的首选。
    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 2017-07-23
    • 2016-01-29
    • 1970-01-01
    • 2015-02-12
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多