3

I've followed the Leinigen install instructions on Windows (with c:\leinigen\ in my path, which is where lein.bat is). I'm now trying to use lein-cooper but this is giving me the following error:

java.io.IOException: Cannot run program "lein": CreateProcess error=2, The system cannot find the file specified
 at java.lang.ProcessBuilder.start (:-1)
    me.raynes.conch.low_level$proc.invokeStatic (low_level.clj:33)
    me.raynes.conch.low_level$proc.doInvoke (low_level.clj:7)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:646)
    clojure.core$apply.invoke (core.clj:641)
    leiningen.cooper$get_procs_from_project$iter__657__661$fn__662.invoke (cooper.clj:61)
    clojure.lang.LazySeq.sval (LazySeq.java:40)
    clojure.lang.LazySeq.seq (LazySeq.java:49)
    clojure.lang.RT.seq (RT.java:521)
    clojure.core$seq__4357.invokeStatic (core.clj:137)
    clojure.core$dorun.invokeStatic (core.clj:3024)
    clojure.core$doall.invokeStatic (core.clj:3039)
    clojure.core$doall.invoke (core.clj:3039)
    leiningen.cooper$get_procs_from_project.invokeStatic (cooper.clj:59)
    leiningen.cooper$get_procs_from_project.invoke (cooper.clj:56)
    leiningen.cooper$cooper.invokeStatic (cooper.clj:145)
    leiningen.cooper$cooper.doInvoke (cooper.clj:111)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    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:648)
    clojure.core$apply.invoke (core.clj:641)
    leiningen.core.main$partial_task$fn__4667.doInvoke (main.clj:284)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$apply.invoke (core.clj:641)
    leiningen.core.main$apply_task.invokeStatic (main.clj:334)
    leiningen.core.main$apply_task.invoke (main.clj:320)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:340)
    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.IOException: CreateProcess error=2, The system cannot find the file specified
 at java.lang.ProcessImpl.create (:-2)
    java.lang.ProcessImpl.<init> (:-1)
    java.lang.ProcessImpl.start (:-1)
    java.lang.ProcessBuilder.start (:-1)
    me.raynes.conch.low_level$proc.invokeStatic (low_level.clj:33)
    me.raynes.conch.low_level$proc.doInvoke (low_level.clj:7)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:646)
    clojure.core$apply.invoke (core.clj:641)
    leiningen.cooper$get_procs_from_project$iter__657__661$fn__662.invoke (cooper.clj:61)
    clojure.lang.LazySeq.sval (LazySeq.java:40)
    clojure.lang.LazySeq.seq (LazySeq.java:49)
    clojure.lang.RT.seq (RT.java:521)
    clojure.core$seq__4357.invokeStatic (core.clj:137)
    clojure.core$dorun.invokeStatic (core.clj:3024)
    clojure.core$doall.invokeStatic (core.clj:3039)
    clojure.core$doall.invoke (core.clj:3039)
    leiningen.cooper$get_procs_from_project.invokeStatic (cooper.clj:59)
    leiningen.cooper$get_procs_from_project.invoke (cooper.clj:56)
    leiningen.cooper$cooper.invokeStatic (cooper.clj:145)
    leiningen.cooper$cooper.doInvoke (cooper.clj:111)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    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:648)
    clojure.core$apply.invoke (core.clj:641)
    leiningen.core.main$partial_task$fn__4667.doInvoke (main.clj:284)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$apply.invoke (core.clj:641)
    leiningen.core.main$apply_task.invokeStatic (main.clj:334)
    leiningen.core.main$apply_task.invoke (main.clj:320)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:340)
    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)

I get the above when I run lein cooper from a Powershell prompt. I've got an entire project where this does work on my colleague's OSX, but on Windows tit doesn't work.

I've created a smaller repro using the following project file:

(defproject cooper.repro "0.0.1"
    :dependencies [[org.clojure/clojure "1.9.0"]
                [org.clojure/clojurescript "1.9.946"]]

    :plugins [[lein-cljsbuild "1.1.7"]
            [lein-cooper "1.2.2"]
            [lein-figwheel "0.5.14"]]

    :source-paths ["src/"]

    :cooper {"cljs" ["lein" "figwheel"]}

    :figwheel {:http-server-root "./" :server-port 3000}

    :cljsbuild {:builds [{
        :id "dev" 
        :source-paths ["src"] 
        :figwheel true
        :compiler {
            :main hello-world 
            :asset-path "js/out" 
            :output-to "resources/public/exmple.js" 
            :output-dir "resources/public/out"
        }}]}
)

My src folder contains just a hello-world clojurescript file with only a namespace. If I run just lein figwheel from the command line instead it does work as expected (even though it doesn't do anything interesting).

At first I thought it was a path-related issue so I rebooted my machine but that didn't help.

Google search gives zero useful results.

Any tips on getting this fixed? Or should I file a bug (and if so: where? for figwheel, or for lein-cooper?).

Jeroen
  • 60,696
  • 40
  • 206
  • 339
  • For now, because we were using `npm` anyways, I just resorted to using [npm's Foreman package](https://www.npmjs.com/package/foreman). – Jeroen Jan 03 '18 at 10:14
  • I've cross-posted this question [on lein-cooper's GitHub issues list](https://github.com/kouphax/lein-cooper/issues/11) because perhaps it's just a missing feature. – Jeroen Jan 03 '18 at 13:46
  • so have you managed to solve the issue? I have same problem on Windows. – Twice_Twice May 02 '18 at 08:44
  • @Twice_Twice Nope, sorry. I stuck with Foreman, and since last month I've moved on to another tech stack for my next project. – Jeroen May 02 '18 at 14:15
  • I have same issue, interesting , if you rename `lein` to `lein.bat` then you run it . it works on my windows machine – Shawn Zhang Aug 08 '19 at 04:57

0 Answers0