I had a problem very similar to yours using clj-jgit - I ended up simply 
excluding jgit from pulling in core.memoize as a dependency:

         [clj-jgit "0.8.0" :exclusions [org.clojure/core.memoize]]

> On Nov 14, 2014, at 5:56 AM, Simon Brooke <still...@googlemail.com> wrote:
> 
> Thank you very much for the suggestion. I believe that your diagnosis is 
> correct; unfortunately, your solution does not work. Furthermore, even if I 
> remove the dependency on clj-jgit and all references to it from my code, do a 
> 'lein clean', and rebuild, I still get the same error on startup (although my 
> application does start and run, which it didn't before).
> 
> What does work is if I clone scm-jgit, update its dependency to 
> [org.clojure/core.memoize "0.5.6"] and its version to '0.8.2-SNAPSHOT', build 
> it with 'lein install', and then build my own application, then everything 
> works fine. I can't really, though, distribute a project based on an 
> unsupported version on someone else's project.
> 
> I'll try sending a project.clj diff to the maintainers of clj-jgit, and see 
> if they'll accept it.
> 
> This feels remarkably like DLL Hell :-(
> 
> On Thursday, 13 November 2014 22:56:17 UTC, James Reeves wrote:
> The problem is that your dependency tree pulls in core.memoize 0.5.3, but 
> other libraries have a dependency on 0.5.6. If you run "lein deps :tree" you 
> can see this for yourself:
> 
>     [clj-jgit "0.8.1"] -> [org.clojure/core.memoize "0.5.3"]
>      overrides
>     [lib-noir "0.9.4"] -> [ring-middleware-format "0.4.0"] -> 
> [org.clojure/core.memoize "0.5.6"]
> 
> Maven dependency management is a little odd. "Closer" dependencies are 
> preferred, even if their version number is lower, so the memoize library 
> pulled in my clj-jgit is preferred over the one pulled in indirectly by 
> lib-noir.
> 
> The reason it works on your laptop might be something to do with your 
> profiles.clj. Perhaps you have a plugin that pulls in the core.memoize 0.5.6 
> dependency, which causes everything to work.
> 
> The solution to this is to add in an explicit dependency for core.memoize 
> 0.5.6 in your project file. This will ensure you have the latest version. You 
> may also want to do something about all the other conflicts you have in the 
> dependency tree...
> 
> - James
> 
> 
> On 13 November 2014 22:26, Simon Brooke <stil...@googlemail.com 
> <javascript:>> wrote:
> Hi everyone
> 
> Yesterday I proudly announced my new Wiki engine; today I'm investigating an 
> odd bug which prevents it compiling on some Ubuntu machines, but not my 
> laptop (on which I did the development), and I'm really puzzled by it.
> 
> Top level outline:
> 
> When one clones the repository from 
> https://github.com/simon-brooke/smeagol.git 
> <https://github.com/simon-brooke/smeagol.git> and then invokes
> 
>     lein repl
> 
> (or lein ring uberwar, lein ring server, and so on) one gets an odd bug.
> 
> If one does simple 'lein repl', one gets an error message 
> '#<CompilerException java.lang.IllegalAccessError: lu does not exist, 
> compiling:(ring/middleware/format_response.clj:1:1)>'; if one then does
> 
>     smeagol.repl=> (ns smeagol.repl
>           #_=>   (:use smeagol.handler
>           #_=>         ring.server.standalone
>           #_=>         [ring.middleware file-info file]))
> 
> one gets
> 
>     CompilerException java.lang.IllegalAccessError: lu does not exist, 
> compiling:(ring/middleware/format_response.clj:1:1) 
> 
> If one instead does
> 
>     lein ring server
> 
> one gets a full stacktrace, which I'll append at the end of this post. 
> However, the diagnosis as far as I've got goes like this:
> 
> The file ring/middleware/format_response.clj 
> <https://github.com/ngrunwald/ring-middleware-format/blob/master/src/ring/middleware/format_response.clj>
>  starts with this expression:
> 
>  (ns ring.middleware.format-response
>   (:require [cheshire.core :as json]
>             [ring.util.response :as res]
>             [clojure.java.io :as io]
>             [clj-yaml.core :as yaml]
>             [clojure.string :as s]
>             [cognitect.transit :as transit])
>   (:use [clojure.core.memoize :only [lu]])
>   (:import [java.io File InputStream BufferedInputStream
>             ByteArrayOutputStream]
>            [java.nio.charset Charset]))
> 
> I've highlighted the sub-expression I'm suspicious of.
> 
> Looking at clojure/core/memoize.clj 
> <https://github.com/clojure/core.memoize/blob/master/src/main/clojure/clojure/core/memoize.clj>,
>  there is both '(def-deprecated lu ...)' (line 373) and '(defn lu ...)' (line 
> 384). I'm not sure what is going on there, and I'm even more confused that 
> the deprecation comment says
> 
> (def-deprecated lu
>   "DEPRECATED: Please use clojure.core.memoize/lu instead."
> 
> Given that this is in the namespace clojure.core.memoize, that comment 
> doesn't make sense to me - I'm obviously missing something. My guess that the 
> namespace clojure.core.memoize should be provided by the jar 
> clojure-1.6.0.jar seems to be correct:
> 
> simon@fletcher:~/workspace/smeagol$ jar tvf 
> /home/simon/.m2/repository/org/clojure/clojure/1.6.0/clojure-1.6.0.jar | grep 
> memoize
>   1055 Tue Mar 25 08:45:06 GMT 2014 clojure/core$memoize.class
>   1708 Tue Mar 25 08:45:06 GMT 2014 clojure/core$memoize$fn__5097.class
> 
> On both the machines on which Smeagol works, and on the machines on which 
> Smeagol does not work, the file size of clojure.1.0.jar is 3664472 bytes and 
> the MD5 sum is fdbad523e92cb53e61484106431d4489, so it's not the case that 
> I've got different versions of Clojure. Likewise the filesize of 
> /home/simon/.m2/repository/ring-middleware-format/ring-middleware-format/0.4.0/ring-middleware-format-0.4.0.jar
>  is 14366 bytes and the MD5 sum is 38b9850a38bd9ee5eb3321c73cada73c both on 
> working and on non working installations.
> 
> I've pulled the source for ring-middleware-format from 
> https://github.com/ngrunwald/ring-middleware-format.git 
> <https://github.com/ngrunwald/ring-middleware-format.git> - it compiles 
> without complaint (but is a slightly later version than the 0.4.0 build, it's 
> 0.4.1-SNAPSHOT).
> 
> Oh, and (having made a backup, fortunately) I've done a 'lein clean; lein 
> ring server' on my development machine and established that it now also has 
> the bug. There is literally nothing that is not either in the git-ignore file 
> or else in git.
> 
> In short, I'm stuck and puzzled. I don't think this is my bug, but I'm 
> prepared to believe it could be. I don't understand why the bug appears in a 
> clean checkout, but doesn't occur in my development directory. I'm not yet 
> confident enough that it's someone else's bug to post an issue on their 
> repository. Any help you can give would be extremely welcome!
> 
> My .git-ignore is as follows:
> 
> smeagol.log
> pom.xml
> pom.xml.asc
> *jar
> /lib/
> /classes/
> /target/
> /checkouts/
> /resources/public/content/.git
> .lein-deps-sum
> .lein-repl-history
> .lein-plugins/
> .lein-failures
> .lein-env
> 
> My project.clj is as follows:
> 
> (defproject smeagol "0.2.0-SNAPSHOT"
>   :description "A simple Git-backed Wiki inspired by Gollum"
>   :url "http://example.com/FIXME <http://example.com/FIXME>"
>   :dependencies [[org.clojure/clojure "1.6.0"]
>                  [lib-noir "0.9.4" :exclusions [org.clojure/core.memoize 
> org.clojure/tools.reader]]
>                  [ring-server "0.3.1"]
>                  [selmer "0.7.2"]
>                  [com.taoensso/timbre "3.3.1" :exclusions 
> [org.clojure/tools.reader]]
>                  [com.taoensso/tower "3.0.2" :exclusions 
> [com.taoensso/encore]]
>                  [markdown-clj "0.9.55" :exclusions [com.keminglabs/cljx]]
>                  [clj-jgit "0.8.1"]
>                  [environ "1.0.0"]
>                  [im.chit/cronj "1.4.2"]
>                  [noir-exception "0.2.2"]
>                  [prone "0.6.0"]]
> 
>   :repl-options {:init-ns smeagol.repl}
>   :jvm-opts ["-server"]
>   :plugins [[lein-ring "0.8.13" :exclusions [org.clojure/clojure]]
>             [lein-environ "1.0.0"]
>             [lein-ancient "0.5.5" :exclusions [org.clojure/clojure 
> org.clojure/data.xml]]
>             [lein-marginalia "0.7.1" :exclusions [org.clojure/clojure]]]
>   :ring {:handler smeagol.handler/app
>          :init    smeagol.handler/init
>          :destroy smeagol.handler/destroy}
>   :profiles
>   {:uberjar {:omit-source true
>              :env {:production true}
>              :aot :all}
>    :production {:ring {:open-browser? false
>                        :stacktraces?  false
>                        :auto-reload?  false}}
>    :dev {:dependencies [[ring-mock "0.1.5"]
>                         [ring/ring-devel "1.3.1"]
>                         [pjstadig/humane-test-output "0.6.0"]]
>          :injections [(require 'pjstadig.humane-test-output)
>                       (pjstadig.humane-test-output/activate!)]
>          :env {:dev true}}}
>   :min-lein-version "2.0.0")
> 
> Full stack trace:
> 
> simon@fletcher:~/workspace/smeagol$ lein ring server
> Exception in thread "main" java.lang.IllegalAccessError: lu does not exist, 
> compiling:(ring/middleware/format_response.clj:1:1)
>       at clojure.lang.Compiler.load(Compiler.java:7142)
>       at clojure.lang.RT.loadResourceScript(RT.java:370)
>       at clojure.lang.RT.loadResourceScript(RT.java:361)
>       at clojure.lang.RT.load(RT.java:440)
>       at clojure.lang.RT.load(RT.java:411)
>       at clojure.core$load$fn__5066.invoke(core.clj:5641)
>       at clojure.core$load.doInvoke(core.clj:5640)
>       at clojure.lang.RestFn.invoke(RestFn.java:408)
>       at clojure.core$load_one.invoke(core.clj:5446)
>       at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)
>       at clojure.core$load_lib.doInvoke(core.clj:5485)
>       at clojure.lang.RestFn.applyTo(RestFn.java:142)
>       at clojure.core$apply.invoke(core.clj:626)
>       at clojure.core$load_libs.doInvoke(core.clj:5528)
>       at clojure.lang.RestFn.applyTo(RestFn.java:137)
>       at clojure.core$apply.invoke(core.clj:626)
>       at clojure.core$require.doInvoke(core.clj:5607)
>       at clojure.lang.RestFn.invoke(RestFn.java:408)
>       at 
> ring.middleware.format$eval1014$loading__4958__auto____1015.invoke(format.clj:1)
>       at ring.middleware.format$eval1014.invoke(format.clj:1)
>       at clojure.lang.Compiler.eval(Compiler.java:6703)
>       at clojure.lang.Compiler.eval(Compiler.java:6692)
>       at clojure.lang.Compiler.load(Compiler.java:7130)
>       at clojure.lang.RT.loadResourceScript(RT.java:370)
>       at clojure.lang.RT.loadResourceScript(RT.java:361)
>       at clojure.lang.RT.load(RT.java:440)
>       at clojure.lang.RT.load(RT.java:411)
>       at clojure.core$load$fn__5066.invoke(core.clj:5641)
>       at clojure.core$load.doInvoke(core.clj:5640)
>       at clojure.lang.RestFn.invoke(RestFn.java:408)
>       at clojure.core$load_one.invoke(core.clj:5446)
>       at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)
>       at clojure.core$load_lib.doInvoke(core.clj:5485)
>       at clojure.lang.RestFn.applyTo(RestFn.java:142)
>       at clojure.core$apply.invoke(core.clj:626)
> ...
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en 
> <http://groups.google.com/group/clojure?hl=en>
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com 
> <mailto:clojure+unsubscr...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to