Skip to content

Instantly share code, notes, and snippets.

@codeasone
Last active March 8, 2018 10:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codeasone/5efbc080918c1d63da267e1c618c5b42 to your computer and use it in GitHub Desktop.
Save codeasone/5efbc080918c1d63da267e1c618c5b42 to your computer and use it in GitHub Desktop.
Issue with vizdeps and lein 2.8.1

I’m experiencing a persistent issue with vizdeps under:

➜  app lein --version
Leiningen 2.8.1 on Java 1.8.0_151 Java HotSpot(TM) 64-Bit Server VM

I’ve tried to isolate the problem for a minimal project (ymmv with this btw):

(defproject app "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.9.0"]]
  :profiles
  {:dev {:plugins [[walmartlabs/vizdeps "0.1.6"]]}})
➜  app lein classpath
/home/mark/Code/Personal/clojure/app/test:/home/mark/Code/Personal/clojure/app/src:/home/mark/Code/Personal/clojure/app/dev-resources:/home/mark/Code/Personal/clojure/app/resources:/home/mark/Code/Personal/clojure/app/target/classes:/home/mark/.m2/repository/org/clojure/clojure/1.9.0/clojure-1.9.0.jar:/home/mark/.m2/repository/org/clojure/spec.alpha/0.1.143/spec.alpha-0.1.143.jar:/home/mark/.m2/repository/org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24.jar:/home/mark/.m2/repository/org/clojure/tools.nrepl/0.2.12/tools.nrepl-0.2.12.jar:/home/mark/.m2/repository/clojure-complete/clojure-complete/0.2.4/clojure-complete-0.2.4.jar

I nuke the m2 cache in case that’s presenting issues:

➜  app rm -rf ~/.m2
➜  app lein deps
Retrieving walmartlabs/vizdeps/0.1.6/vizdeps-0.1.6.pom from clojars
Retrieving org/clojure/clojure/1.8.0/clojure-1.8.0.pom from central
Retrieving org/sonatype/oss/oss-parent/7/oss-parent-7.pom from central
Retrieving dorothy/dorothy/0.0.6/dorothy-0.0.6.pom from clojars
Retrieving org/clojure/clojure/1.5.1/clojure-1.5.1.pom from central
Retrieving org/sonatype/oss/oss-parent/5/oss-parent-5.pom from central
Retrieving medley/medley/0.8.4/medley-0.8.4.pom from clojars
Retrieving org/clojure/clojure/1.7.0/clojure-1.7.0.pom from central
Retrieving com/stuartsierra/dependency/0.2.0/dependency-0.2.0.pom from clojars
Retrieving org/clojure/clojure/1.8.0/clojure-1.8.0.jar from central
Retrieving walmartlabs/vizdeps/0.1.6/vizdeps-0.1.6.jar from clojars
Retrieving dorothy/dorothy/0.0.6/dorothy-0.0.6.jar from clojars
Retrieving medley/medley/0.8.4/medley-0.8.4.jar from clojars
Retrieving com/stuartsierra/dependency/0.2.0/dependency-0.2.0.jar from clojars
Retrieving org/clojure/clojure/1.9.0/clojure-1.9.0.pom from central
Retrieving org/clojure/spec.alpha/0.1.143/spec.alpha-0.1.143.pom from central
Retrieving org/clojure/pom.contrib/0.2.2/pom.contrib-0.2.2.pom from central
Retrieving org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24.pom from central
Retrieving org/clojure/tools.nrepl/0.2.12/tools.nrepl-0.2.12.pom from central
Retrieving org/clojure/pom.contrib/0.1.2/pom.contrib-0.1.2.pom from central
Retrieving clojure-complete/clojure-complete/0.2.4/clojure-complete-0.2.4.pom from clojars
Retrieving org/clojure/tools.nrepl/0.2.12/tools.nrepl-0.2.12.jar from central
Retrieving org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24.jar from central
Retrieving org/clojure/spec.alpha/0.1.143/spec.alpha-0.1.143.jar from central
Retrieving org/clojure/clojure/1.9.0/clojure-1.9.0.jar from central
Retrieving clojure-complete/clojure-complete/0.2.4/clojure-complete-0.2.4.jar from clojars
➜  app lein vizdeps
clojure.lang.Compiler$CompilerException: java.io.FileNotFoundException: Could not locate clojure/tools/cli__init.class or clojure/tools/cli.clj on classpath., compiling:(com/walmartlabs/vizdeps/common.clj:1:1)
 at clojure.lang.Compiler.load (Compiler.java:7391)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.loadResourceScript (RT.java:363)
    clojure.lang.RT.load (RT.java:453)
    clojure.lang.RT.load (RT.java:419)
    clojure.core$load$fn__5677.invoke (core.clj:5893)
    clojure.core$load.invokeStatic (core.clj:5892)
    clojure.core$load.doInvoke (core.clj:5876)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5697)
    clojure.core$load_one.invoke (core.clj:5692)
    clojure.core$load_lib$fn__5626.invoke (core.clj:5737)
    clojure.core$load_lib.invokeStatic (core.clj:5736)
    clojure.core$load_lib.doInvoke (core.clj:5717)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$load_libs.invokeStatic (core.clj:5774)
    clojure.core$load_libs.doInvoke (core.clj:5758)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$require.invokeStatic (core.clj:5796)
    clojure.core$require.doInvoke (core.clj:5796)
    clojure.lang.RestFn.invoke (RestFn.java:551)
    leiningen.vizdeps$eval496$loading__5569__auto____497.invoke (vizdeps.clj:1)
    leiningen.vizdeps$eval496.invokeStatic (vizdeps.clj:1)
    leiningen.vizdeps$eval496.invoke (vizdeps.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:6927)
    clojure.lang.Compiler.eval (Compiler.java:6916)
    clojure.lang.Compiler.load (Compiler.java:7379)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.loadResourceScript (RT.java:363)
    clojure.lang.RT.load (RT.java:453)
    clojure.lang.RT.load (RT.java:419)
    clojure.core$load$fn__5677.invoke (core.clj:5893)
    clojure.core$load.invokeStatic (core.clj:5892)
    clojure.core$load.doInvoke (core.clj:5876)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5697)
    clojure.core$load_one.invoke (core.clj:5692)
    clojure.core$load_lib$fn__5626.invoke (core.clj:5737)
    clojure.core$load_lib.invokeStatic (core.clj:5736)
    clojure.core$load_lib.doInvoke (core.clj:5717)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$load_libs.invokeStatic (core.clj:5774)
    clojure.core$load_libs.doInvoke (core.clj:5758)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$require.invokeStatic (core.clj:5796)
    clojure.core$require.doInvoke (core.clj:5796)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:102)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:105)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.main$lookup_task_var.invokeStatic (main.clj:69)
    leiningen.core.main$lookup_task_var.invoke (main.clj:65)
    leiningen.core.main$pass_through_help_QMARK_.invokeStatic (main.clj:79)
    leiningen.core.main$pass_through_help_QMARK_.invoke (main.clj:73)
    leiningen.core.main$task_args.invokeStatic (main.clj:82)
    leiningen.core.main$task_args.invoke (main.clj:81)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:339)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__4734.invoke (main.clj:420)
    leiningen.core.main$_main.invokeStatic (main.clj:411)
    leiningen.core.main$_main.doInvoke (main.clj:408)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.lang.Var.invoke (Var.java:379)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.core$apply.invokeStatic (core.clj:646)
    clojure.main$main_opt.invokeStatic (main.clj:314)
    clojure.main$main_opt.invoke (main.clj:310)
    clojure.main$main.invokeStatic (main.clj:421)
    clojure.main$main.doInvoke (main.clj:384)
    clojure.lang.RestFn.invoke (RestFn.java:436)
    clojure.lang.Var.invoke (Var.java:388)
    clojure.lang.AFn.applyToHelper (AFn.java:160)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.main.main (main.java:37)
Caused by: java.io.FileNotFoundException: Could not locate clojure/tools/cli__init.class or clojure/tools/cli.clj on classpath.
 at clojure.lang.RT.load (RT.java:456)
    clojure.lang.RT.load (RT.java:419)
    clojure.core$load$fn__5677.invoke (core.clj:5893)
    clojure.core$load.invokeStatic (core.clj:5892)
    clojure.core$load.doInvoke (core.clj:5876)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5697)
    clojure.core$load_one.invoke (core.clj:5692)
    clojure.core$load_lib$fn__5626.invoke (core.clj:5737)
    clojure.core$load_lib.invokeStatic (core.clj:5736)
    clojure.core$load_lib.doInvoke (core.clj:5717)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$load_libs.invokeStatic (core.clj:5774)
    clojure.core$load_libs.doInvoke (core.clj:5758)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$require.invokeStatic (core.clj:5796)
    clojure.core$require.doInvoke (core.clj:5796)
    clojure.lang.RestFn.invoke (RestFn.java:551)
    com.walmartlabs.vizdeps.common$eval502$loading__5569__auto____503.invoke (common.clj:1)
    com.walmartlabs.vizdeps.common$eval502.invokeStatic (common.clj:1)
    com.walmartlabs.vizdeps.common$eval502.invoke (common.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:6927)
    clojure.lang.Compiler.eval (Compiler.java:6916)
    clojure.lang.Compiler.load (Compiler.java:7379)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.loadResourceScript (RT.java:363)
    clojure.lang.RT.load (RT.java:453)
    clojure.lang.RT.load (RT.java:419)
    clojure.core$load$fn__5677.invoke (core.clj:5893)
    clojure.core$load.invokeStatic (core.clj:5892)
    clojure.core$load.doInvoke (core.clj:5876)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5697)
    clojure.core$load_one.invoke (core.clj:5692)
    clojure.core$load_lib$fn__5626.invoke (core.clj:5737)
    clojure.core$load_lib.invokeStatic (core.clj:5736)
    clojure.core$load_lib.doInvoke (core.clj:5717)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$load_libs.invokeStatic (core.clj:5774)
    clojure.core$load_libs.doInvoke (core.clj:5758)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$require.invokeStatic (core.clj:5796)
    clojure.core$require.doInvoke (core.clj:5796)
    clojure.lang.RestFn.invoke (RestFn.java:551)
    leiningen.vizdeps$eval496$loading__5569__auto____497.invoke (vizdeps.clj:1)
    leiningen.vizdeps$eval496.invokeStatic (vizdeps.clj:1)
    leiningen.vizdeps$eval496.invoke (vizdeps.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:6927)
    clojure.lang.Compiler.eval (Compiler.java:6916)
    clojure.lang.Compiler.load (Compiler.java:7379)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.loadResourceScript (RT.java:363)
    clojure.lang.RT.load (RT.java:453)
    clojure.lang.RT.load (RT.java:419)
    clojure.core$load$fn__5677.invoke (core.clj:5893)
    clojure.core$load.invokeStatic (core.clj:5892)
    clojure.core$load.doInvoke (core.clj:5876)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5697)
    clojure.core$load_one.invoke (core.clj:5692)
    clojure.core$load_lib$fn__5626.invoke (core.clj:5737)
    clojure.core$load_lib.invokeStatic (core.clj:5736)
    clojure.core$load_lib.doInvoke (core.clj:5717)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$load_libs.invokeStatic (core.clj:5774)
    clojure.core$load_libs.doInvoke (core.clj:5758)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$require.invokeStatic (core.clj:5796)
    clojure.core$require.doInvoke (core.clj:5796)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:102)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:105)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.main$lookup_task_var.invokeStatic (main.clj:69)
    leiningen.core.main$lookup_task_var.invoke (main.clj:65)
    leiningen.core.main$pass_through_help_QMARK_.invokeStatic (main.clj:79)
    leiningen.core.main$pass_through_help_QMARK_.invoke (main.clj:73)
    leiningen.core.main$task_args.invokeStatic (main.clj:82)
    leiningen.core.main$task_args.invoke (main.clj:81)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:339)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__4734.invoke (main.clj:420)
    leiningen.core.main$_main.invokeStatic (main.clj:411)
    leiningen.core.main$_main.doInvoke (main.clj:408)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.lang.Var.invoke (Var.java:379)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.core$apply.invokeStatic (core.clj:646)
    clojure.main$main_opt.invokeStatic (main.clj:314)
    clojure.main$main_opt.invoke (main.clj:310)
    clojure.main$main.invokeStatic (main.clj:421)
    clojure.main$main.doInvoke (main.clj:384)
    clojure.lang.RestFn.invoke (RestFn.java:436)
    clojure.lang.Var.invoke (Var.java:388)
    clojure.lang.AFn.applyToHelper (AFn.java:160)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.main.main (main.java:37)

Vizdeps definitely depends on tools.cli

But its project.clj doesn’t include the dependency for some reason…

So I add tools.cli to my project:

➜  app lein deps
Retrieving org/clojure/tools.cli/0.3.5/tools.cli-0.3.5.pom from central
Retrieving org/clojure/clojure/1.4.0/clojure-1.4.0.pom from central
Retrieving org/clojure/tools.cli/0.3.5/tools.cli-0.3.5.jar from central

And check the classpath now includes the tools.cli-0.3.5.jar, which it does:

➜  app lein classpath
/home/mark/Code/Personal/clojure/app/test:/home/mark/Code/Personal/clojure/app/src:/home/mark/Code/Personal/clojure/app/dev-resources:/home/mark/Code/Personal/clojure/app/resources:/home/mark/Code/Personal/clojure/app/target/classes:/home/mark/.m2/repository/org/clojure/clojure/1.9.0/clojure-1.9.0.jar:/home/mark/.m2/repository/org/clojure/spec.alpha/0.1.143/spec.alpha-0.1.143.jar:/home/mark/.m2/repository/org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24.jar:/home/mark/.m2/repository/org/clojure/tools.cli/0.3.5/tools.cli-0.3.5.jar:/home/mark/.m2/repository/org/clojure/tools.nrepl/0.2.12/tools.nrepl-0.2.12.jar:/home/mark/.m2/repository/clojure-complete/clojure-complete/0.2.4/clojure-complete-0.2.4.jar

So does it work?

➜  app lein vizdeps
clojure.lang.Compiler$CompilerException: java.io.FileNotFoundException: Could not locate clojure/tools/cli__init.class or clojure/tools/cli.clj on classpath., compiling:(com/walmartlabs/vizdeps/common.clj:1:1)

Next I forked vizdeps to add the missing dependency walmartlabs/vizdeps#12 and installed it into local maven repo:

➜  vizdeps git:(master) lein install
Created /home/mark/Code/OSS/vizdeps/target/vizdeps-0.1.7.jar
Wrote /home/mark/Code/OSS/vizdeps/pom.xml
Installed jar and pom into local repo.

Updated the project to use vizdeps-0.1.7

Running lein vizdeps now presents a different error:

➜  app lein vizdeps
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn
 at cemerick.pomegranate.aether$resolve_dependencies_STAR_.invokeStatic (aether.clj:786)

Which would seem to originate from leiningen itself: https://github.com/technomancy/leiningen/search?utf8=%E2%9C%93&q=pomegranate&type=

Invoked by the plugin code https://github.com/walmartlabs/vizdeps/blob/master/src/leiningen/vizdeps.clj#L35

Reverting to Leiningen 2.7.1 and using the current vizdeps-0.1.6 release (not my fork) restores functionality.

For now I’m just going back to 2.7.1 from 2.8.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment