Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
clojure.java.shell/sh在新线程中运行时抛出RejectedExecutionException_Clojure_Leiningen - Fatal编程技术网

clojure.java.shell/sh在新线程中运行时抛出RejectedExecutionException

clojure.java.shell/sh在新线程中运行时抛出RejectedExecutionException,clojure,leiningen,Clojure,Leiningen,在一个新的fresh leiningen项目中,其core.clj包含 (defn show-cmd [] (-> (shell/sh "ls") :out println)) (defn -main [] (.start (Thread. show-cmd))) 有关完整的图片,请参阅 因此,当我在上面的项目上运行lein时,会抛出一个RejectedExecutionException。完整的堆栈跟踪在要点中 但是,如果将上述操作放入.clj文件中,

在一个新的fresh leiningen项目中,其core.clj包含

(defn show-cmd
  []
  (-> (shell/sh "ls")
    :out
    println))

(defn -main
  []
  (.start (Thread. show-cmd)))
有关完整的图片,请参阅

因此,当我在上面的项目上运行
lein
时,会抛出一个RejectedExecutionException。完整的堆栈跟踪在要点中

但是,如果将上述操作放入
.clj
文件中,并直接使用clojure运行,而不在工作流中使用leiningen,则可以正常工作。这是leiningen/clojure的一个bug还是只有我

如果是bug,请告诉我如何让相关人员知道,因为这将是我第一次发现bug:)

谢谢

更新根据@skuro的建议,我尝试了我的莱宁根主分支克隆的例子,但仍然得到了相同的错误,如图所示


您需要升级到最新、最好的leiningen版本,可能需要从源代码处编译。leiningen有一个漏洞,它会阻止线程正确执行。在这个主题上也有一些问题,搜索可能会有所帮助。

我发现这与无法打开标准输入和运行leiningen时出错有关。为了解决这个问题,我用了

lein uberjar && java -jar projectstandalone.jar args.

虽然速度稍慢,但仍能正常工作

这是Leiningen的一个已知问题,不幸的是。修理它会导致其他东西断裂。解决方法是强制主功能永不返回:

(defn -main
  []
  (.start (Thread. show-cmd))
  @(promise))

在这里,由于承诺从未兑现,main将永远等待,从而防止Leiningen关闭代理、期货等的执行人。

是的,又一次我的google fu让我失望了。我会和莱恩的主版本核对一下。谢谢。我克隆了回购协议并进行了测试,但我仍然看到了错误。请参阅问题,更新了详细信息。谢谢,但正如您所说,此方法速度较慢。恐怕对我的口味来说有点太慢了。我暂时回到了leiningen 1.5.2。是的,这种变通方法确实奏效了。但我希望它能尽快修复:)。谢谢。实际上,这在1.6.1.1中已修复