首页 > 解决方案 > 无法使用 clojure cli 工具执行 main 函数“运行”-Deps 和 CLI 指南

问题描述

我正在从官方 clojure 站点https://clojure.org/guides/deps_and_cli做 clojure cli 教程,但是当我想运行以下命令时遇到了此消息:$ clj -X hello/run

Execution error (FileNotFoundException) at java.io.FileInputStream/open0 (FileInputStream.
-X (El sistema no puede encontrar el archivo especificado)

Full report at:
C:\Users\usuario\AppData\Local\Temp\clojure-16611030546441487090.edn

我想该命令必须在根文件夹中执行,但以防万一我也在 src.

.edn 错误文件如下:

 "Execution error (FileNotFoundException) at java.io.FileInputStream/open0 (FileInputStream.java:-2).\r\n-X (El sistema no puede encontrar el archivo especificado)\r\n",
 :clojure.main/triage
 {:clojure.error/class java.io.FileNotFoundException,
  :clojure.error/line -2,
  :clojure.error/cause
  "-X (El sistema no puede encontrar el archivo especificado)",
  :clojure.error/symbol java.io.FileInputStream/open0,
  :clojure.error/source "FileInputStream.java",
  :clojure.error/phase :execution},
 :clojure.main/trace
 {:via
  [{:type java.io.FileNotFoundException,
    :message
    "-X (El sistema no puede encontrar el archivo especificado)",
    :at [java.io.FileInputStream open0 "FileInputStream.java" -2]}],
  :trace
  [[java.io.FileInputStream open0 "FileInputStream.java" -2]
   [java.io.FileInputStream open "FileInputStream.java" 219]
   [java.io.FileInputStream <init> "FileInputStream.java" 157]
   [java.io.FileInputStream <init> "FileInputStream.java" 112]
   [clojure.lang.Compiler loadFile "Compiler.java" 7571]
   [clojure.main$load_script invokeStatic "main.clj" 475]
   [clojure.main$script_opt invokeStatic "main.clj" 535]
   [clojure.main$script_opt invoke "main.clj" 530]
   [clojure.main$main invokeStatic "main.clj" 664]
   [clojure.main$main doInvoke "main.clj" 616]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.lang.Var applyTo "Var.java" 705]
   [clojure.main main "main.java" 40]],
  :cause "-X (El sistema no puede encontrar el archivo especificado)"}}

Clojure 版本:Clojure 1.10.1

不能做这么简单的事情让我很沮丧。

--编辑:我运行了“clojure -Sdescribe”,版本是 1.10.1.492,所以我按照亚历克斯的说法安​​装了最新版本,它运行正常,但后来我再次运行“描述”,版本没有改变。

我懂了:

PS C:\Users\usuario\downloads> .\win-install-1.10.1.697.ps1
Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the Unblock-File
 cmdlet to allow the script to run without this warning message. Do you want to run

C:\Users\usuario\downloads\win-install-1.10.1.697.ps1?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D"): R
Downloading Clojure tools
WARNING: Clojure will install as a module in your PowerShell module path.

Possible install locations:
  1) C:\Users\usuario\Documents\WindowsPowerShell\Modules
  2) C:\Program Files\WindowsPowerShell\Modules
  3) C:\Windows\system32\WindowsPowerShell\v1.0\Modules
Enter number of preferred install location: 2

Cleaning up existing install
Installing PowerShell module
Removing download
Clojure now installed. Use "clj -h" for help.

PS C:\Users\usuario\downloads> clojure -Sdescribe
{:version "1.10.1.492"
 :config-files ["C:\Users\usuario\Documents\WindowsPowerShell\Modules\ClojureTools\deps.edn" "C:\Users\usuario\.clojure\
deps.edn" "deps.edn"]
 :config-user "C:\Users\usuario\.clojure\deps.edn"
 :config-project "deps.edn"
 :install-dir "C:\Users\usuario\Documents\WindowsPowerShell\Modules\ClojureTools"
 :config-dir "C:\Users\usuario\.clojure"
 :cache-dir "C:\Users\usuario\.clojure\.cpcache"
 :force False
 :repro False
 :resolve-aliases ""
 :classpath-aliases ""
 :jvm-aliases ""
 :main-aliases ""
 :all-aliases ""}

标签: clojureclojurescriptedn

解决方案


在最新版本的 Clojure 工具 (1.10.1.697) 中添加了 -X 功能。从错误消息来看,在我看来这是一个旧版本。你能检查clojure -Sdescribe一下你有什么版本吗?

您可以在https://github.com/clojure/tools.deps.alpha/wiki/clj-on-Windows找到安装说明和最新链接


推荐阅读