I think I have a conflict involving different libraries using different versions of JodaTime. I have no idea how to fix this.
I have nearly the same problem as this: http://stackoverflow.com/questions/21487476/maven-build-throws-jodatime-exception-at-runtime However, in my case, I'm building a web app in Clojure, whereas my co-worker is building our Natural Language Processing engine in Java. The NLP is included as a jar. We had this working for a few weeks, but my co-worker has added some new dependencies that are now giving us this error. This person also reports a similar error: Error creating edu.stanford.nlp.time.TimeExpressionExtractorImpl See here: http://mail.wso2.org/mailarchive/dev/2014-September/035337.html with an answer here: http://mail.wso2.org/mailarchive/dev/2014-September/035341.html The issue in both cases seems to be a version conflict in different libraries, but I have no idea how to resolve this. In the Clojure app we use clj-time, which apparently uses Joda-Time 2.6, whereas the Stanford Core NLP libraries seem to use Joda 2.1. Is there anyway to resolve that conflict? Both pieces of software compile, and the Clojure app can start, with the NLP engine included. However, the Clojure app then calls a "start" method in the NLP engine, which causes the NLP engine to load the lexers and parsers that it needs. We then get these messages and errors: Loading classifier from /home/safflower/apricots/dependencies/english.muc.7class.caseless.distsim.crf.ser.gz ... done [1.5 sec]. Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ... done [0.3 sec]. Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.caseless.ser.gz ... done [1.1 sec]. Adding annotator tokenize TokenizerAnnotator: No tokenizer type provided. Defaulting to PTBTokenizer. Adding annotator ssplit Adding annotator pos Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger ... done [1.9 sec]. Adding annotator lemma Adding annotator ner Loading classifier from /home/safflower/apricots/dependencies/english.all.7class.distsim.crf.ser.gz ... done [1.5 sec]. Initializing JollyDayHoliday for SUTime from classpath: edu/stanford/nlp/models/sutime/jollyday/Holidays_sutime.xml as sutime.binder.1. #<ReflectionLoadingException edu.stanford.nlp.util.ReflectionLoading$ReflectionLoadingException: Error creating edu.stanford.nlp.time.TimeExpressionExtractorImpl> Exception in start/start: edu.stanford.nlp.util.ReflectionLoading$ReflectionLoadingException: Error creating edu.stanford.nlp.time.TimeExpressionExtractorImpl If I do this in the Java app: mvn dependency:tree I see this: [INFO] | +- joda-time:joda-time:jar:2.1:compile [INFO] | \- javax.xml.bind:jaxb-api:jar:2.2.7:compile [INFO] +- log4j:log4j:jar:1.2.17:compile [INFO] +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile [INFO] | \- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile [INFO] +- junit:junit:jar:3.8.1:test [INFO] +- net.sf.supercsv:super-csv:jar:2.0.0-beta-1:compile [INFO] +- org.apache.commons:commons-lang3:jar:3.0:compile [INFO] \- edu.stanford.nlp:stanford-corenlp:jar:3.5.2:compile [INFO] +- com.io7m.xom:xom:jar:1.2.10:compile [INFO] | +- xml-apis:xml-apis:jar:1.3.03:compile [INFO] | +- xerces:xercesImpl:jar:2.8.0:compile [INFO] | \- xalan:xalan:jar:2.7.0:compile [INFO] +- com.googlecode.efficient-java-matrix-library:ejml:jar:0.23:compile [INFO] \- javax.json:javax.json-api:jar:1.0:compile If I do this in the Clojure app: lein deps :tree I see this: Retrieving org/clojure/tools.nrepl/0.2.6/tools.nrepl-0.2.6.pom from central Retrieving clojure-complete/clojure-complete/0.2.3/clojure-complete-0.2.3.pom from clojars Retrieving org/clojure/tools.nrepl/0.2.6/tools.nrepl-0.2.6.jar from central Retrieving clojure-complete/clojure-complete/0.2.3/clojure-complete-0.2.3.jar from clojars Possibly confusing dependencies found: [slingshot "0.10.3"] overrides [clj-http "1.1.2"] -> [slingshot "0.12.2" :exclusions [org.clojure/clojure]] Consider using these exclusions: [clj-http "1.1.2" :exclusions [slingshot]] [clj-time "0.6.0"] overrides [ring "1.4.0-RC1"] -> [ring/ring-jetty-adapter "1.4.0-RC1"] -> [ring/ring-core "1.4.0-RC1"] -> [clj-time "0.9.0"] and [ring "1.4.0-RC1"] -> [ring/ring-devel "1.4.0-RC1"] -> [ring/ring-core "1.4.0-RC1"] -> [clj-time "0.9.0"] and [ring "1.4.0-RC1"] -> [ring/ring-core "1.4.0-RC1"] -> [clj-time "0.9.0"] Consider using these exclusions: [ring "1.4.0-RC1" :exclusions [clj-time]] [ring "1.4.0-RC1" :exclusions [clj-time]] [ring "1.4.0-RC1" :exclusions [clj-time]] [org.clojure/tools.namespace "0.2.4"] overrides [ring "1.4.0-RC1"] -> [ring/ring-devel "1.4.0-RC1"] -> [ns-tracker "0.3.0"] -> [org.clojure/tools.namespace "0.2.10"] Consider using these exclusions: [ring "1.4.0-RC1" :exclusions [org.clojure/tools.namespace]] [clj-stacktrace "0.2.7"] overrides [ring "1.4.0-RC1"] -> [ring/ring-devel "1.4.0-RC1"] -> [clj-stacktrace "0.2.8"] Consider using these exclusions: [ring "1.4.0-RC1" :exclusions [clj-stacktrace]] [clj-time "0.6.0"] -> [joda-time "2.2"] overrides [ring "1.4.0-RC1"] -> [ring/ring-jetty-adapter "1.4.0-RC1"] -> [ring/ring-core "1.4.0-RC1"] -> [clj-time "0.9.0"] -> [joda-time "2.6"] and [ring "1.4.0-RC1"] -> [ring/ring-devel "1.4.0-RC1"] -> [ring/ring-core "1.4.0-RC1"] -> [clj-time "0.9.0"] -> [joda-time "2.6"] and [ring "1.4.0-RC1"] -> [ring/ring-core "1.4.0-RC1"] -> [clj-time "0.9.0"] -> [joda-time "2.6"] Consider using these exclusions: [ring "1.4.0-RC1" :exclusions [joda-time]] [ring "1.4.0-RC1" :exclusions [joda-time]] [ring "1.4.0-RC1" :exclusions [joda-time]] [cheshire "5.5.0"] [com.fasterxml.jackson.core/jackson-core "2.5.3"] [com.fasterxml.jackson.dataformat/jackson-dataformat-cbor "2.5.3"] [com.fasterxml.jackson.dataformat/jackson-dataformat-smile "2.5.3"] [tigris "0.1.1"] [clj-http "1.1.2"] [com.cognitect/transit-clj "0.8.271" :exclusions [[org.clojure/clojure]]] [com.cognitect/transit-java "0.8.287"] [com.fasterxml.jackson.datatype/jackson-datatype-json-org "2.3.2"] [com.fasterxml.jackson.core/jackson-databind "2.3.2"] [com.fasterxml.jackson.core/jackson-annotations "2.3.0"] [org.json/json "20090211"] [org.apache.directory.studio/org.apache.commons.codec "1.8"] [org.msgpack/msgpack "0.6.10"] [com.googlecode.json-simple/json-simple "1.1.1" :exclusions [[junit]]] [org.javassist/javassist "3.18.1-GA"] [commons-codec "1.10" :exclusions [[org.clojure/clojure]]] [commons-io "2.4" :exclusions [[org.clojure/clojure]]] [crouton "0.1.2" :exclusions [[org.clojure/clojure]]] [org.jsoup/jsoup "1.7.1"] [org.apache.httpcomponents/httpclient "4.4.1" :exclusions [[org.clojure/clojure]]] [commons-logging "1.2"] [org.apache.httpcomponents/httpcore "4.4.1" :exclusions [[org.clojure/clojure]]] [org.apache.httpcomponents/httpmime "4.4.1" :exclusions [[org.clojure/clojure]]] [org.clojure/tools.reader "0.9.2" :exclusions [[org.clojure/clojure]]] [potemkin "0.3.13" :exclusions [[org.clojure/clojure]]] [clj-tuple "0.2.1"] [clj-stacktrace "0.2.7"] [clj-time "0.6.0"] [joda-time "2.2"] [clojure-complete "0.2.3" :scope "test" :exclusions [[org.clojure/clojure]]] [com.novemberain/monger "2.0.1"] [clojurewerkz/support "1.1.0"] [com.google.guava/guava "18.0"] [org.mongodb/mongo-java-driver "2.12.4"] [com.taoensso/timbre "3.2.1"] [com.taoensso/encore "1.5.1"] [io.aviso/pretty "0.1.10"] [compojure "1.3.4"] [clout "2.1.2"] [instaparse "1.4.0" :exclusions [[org.clojure/clojure]]] [medley "0.6.0"] [org.clojure/tools.macro "0.1.5"] [ring/ring-codec "1.0.0"] [dire "0.5.1"] [robert/hooke "1.3.0"] [local/nlp "1.0-SNAPSHOT"] [manifold "0.1.0"] [org.clojure/tools.logging "0.3.1"] [riddley "0.1.9"] [me.raynes/fs "1.4.4"] [org.apache.commons/commons-compress "1.4"] [org.tukaani/xz "1.0"] [org.clojure/clojure "1.6.0"] [org.clojure/core.cache "0.6.4"] [org.clojure/data.priority-map "0.0.4"] [org.clojure/core.incubator "0.1.3"] [org.clojure/core.match "0.3.0-alpha4"] [org.clojure/tools.analyzer.jvm "0.6.5"] [org.clojure/core.memoize "0.5.6"] [org.clojure/tools.analyzer "0.6.4"] [org.ow2.asm/asm-all "4.2"] [org.clojure/data.json "0.2.5"] [org.clojure/tools.namespace "0.2.4"] [org.clojure/tools.nrepl "0.2.6" :scope "test" :exclusions [[org.clojure/clojure]]] [overtone/at-at "1.2.0"] [ring/ring-json "0.3.1"] [ring "1.4.0-RC1"] [ring/ring-core "1.4.0-RC1"] [commons-fileupload "1.3.1"] [crypto-equality "1.0.0"] [crypto-random "1.2.0"] [ring/ring-devel "1.4.0-RC1"] [hiccup "1.0.5"] [ns-tracker "0.3.0"] [org.clojure/java.classpath "0.2.2"] [ring/ring-jetty-adapter "1.4.0-RC1"] [org.eclipse.jetty/jetty-server "9.2.10.v20150310"] [javax.servlet/javax.servlet-api "3.1.0"] [org.eclipse.jetty/jetty-http "9.2.10.v20150310"] [org.eclipse.jetty/jetty-util "9.2.10.v20150310"] [org.eclipse.jetty/jetty-io "9.2.10.v20150310"] [ring/ring-servlet "1.4.0-RC1"] [slingshot "0.10.3"] [robert/hooke "1.3.0"] [local/nlp "1.0-SNAPSHOT"] [manifold "0.1.0"] [org.clojure/tools.logging "0.3.1"] [riddley "0.1.9"] [me.raynes/fs "1.4.4"] [org.apache.commons/commons-compress "1.4"] [org.tukaani/xz "1.0"] [org.clojure/clojure "1.6.0"] [org.clojure/core.cache "0.6.4"] [org.clojure/data.priority-map "0.0.4"] [org.clojure/core.incubator "0.1.3"] [org.clojure/core.match "0.3.0-alpha4"] [org.clojure/tools.analyzer.jvm "0.6.5"] [org.clojure/core.memoize "0.5.6"] [org.clojure/tools.analyzer "0.6.4"] [org.ow2.asm/asm-all "4.2"] [org.clojure/data.json "0.2.5"] [org.clojure/tools.namespace "0.2.4"] [org.clojure/tools.nrepl "0.2.6" :scope "test" :exclusions [[org.clojure/clojure]]] [overtone/at-at "1.2.0"] [ring/ring-json "0.3.1"] [ring "1.4.0-RC1"] [ring/ring-core "1.4.0-RC1"] [commons-fileupload "1.3.1"] [crypto-equality "1.0.0"] [crypto-random "1.2.0"] [ring/ring-devel "1.4.0-RC1"] [hiccup "1.0.5"] [ns-tracker "0.3.0"] [org.clojure/java.classpath "0.2.2"] [ring/ring-jetty-adapter "1.4.0-RC1"] [org.eclipse.jetty/jetty-server "9.2.10.v20150310"] [javax.servlet/javax.servlet-api "3.1.0"] [org.eclipse.jetty/jetty-http "9.2.10.v20150310"] [org.eclipse.jetty/jetty-util "9.2.10.v20150310"] [org.eclipse.jetty/jetty-io "9.2.10.v20150310"] [ring/ring-servlet "1.4.0-RC1"] [slingshot "0.10.3"] How would I resolve a potential version conflict? This is the project.clj file that I have: (defproject oyster "0.1" :dependencies [[org.clojure/clojure "1.6.0"] [com.taoensso/timbre "3.2.1"] [dire "0.5.1"] [slingshot "0.10.3"] [ring "1.4.0-RC1"] [clj-time "0.6.0"] [org.clojure/data.json "0.2.5"] [compojure "1.3.4"] [com.novemberain/monger "2.0.1"] [org.clojure/tools.namespace "0.2.4"] [manifold "0.1.0"] [me.raynes/fs "1.4.4"] [org.clojure/core.incubator "0.1.3"] [clj-stacktrace "0.2.7"] [overtone/at-at "1.2.0"] [ring/ring-json "0.3.1"] [clj-http "1.1.2"] [org.clojure/core.cache "0.6.4"] [cheshire "5.5.0"] [org.clojure/core.match "0.3.0-alpha4"] [local/nlp "1.0-SNAPSHOT"]] :repositories {"local" ~(str (.toURI (java.io.File. "maven_repository")))} :disable-implicit-clean true ;; :warn-on-reflection true :source-paths ["src/clojure"] :java-source-paths ["src/java"] :main oyster.core :aot :all :jvm-opts ["-Xms100m" "-Xmx1000m" "-XX:-UseCompressedOops"]) -- 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.