1

我正在从官方 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 ""}
4

3 回答 3

3

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

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

于 2020-10-02T22:29:38.913 回答
2

查看 的输出-Sdescribe,看起来您之前安装的 Clojure CLI 进入了您的用户模块,但您告诉新安装进入系统模块:

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"]

2从菜单中选择,但clojure -Sdescribe显示它在 location 中1

尝试重新运行安装脚本并选择安装位置:1

于 2020-10-03T05:02:47.003 回答
-2

可能是在 Windows 上运行 Clojure 的一种更简单的方法

我无法忍受 Powershell 或更旧的 CMD.EXE 工具。恕我直言,使用Git for Windows在 bash 中运行要容易得多。

脚步:

  1. 从 Oracle 站点安装 JDK 14 。
  2. 安装GitForWindows
  3. 使用 GitBash 窗口克隆clj-template存储库。请注意,Windows 并不总是在您的主目录中启动您。你可能需要类似的东西
    > cd         # go to home dir
    > git clone https://github.com/io-tupelo/clj-template
    > cd clj-template
  1. lein 从其主页安装。复制 bash 脚本并将其放在 $HOME/bin 目录中:
    > cd            # go to home dire
    > mkdir bin     # make a $HOME/bin dir
    
    <<< In browser, download [this bash script][5] and save it as `bin/lein`
     without any suffix (i.e. not `bin/lein.bash`) >>>
    
    <<< kill the gitbash window and make a new one >>>
    
    > lein --version    # should download lots of jar files
    ....<snip>....
    
    > lein --version    # should just print version info
    Leiningen 2.9.4 on Java 14....

cd当您需要返回主目录时,不要忘记裸机。此外,如果您安装 Java 或其他东西,请终止 GitBash 窗口并启动一个新窗口。


最后结果:

thomp@DESKTOP-0FP4EPJ MINGW64 /
$ cd

thomp@DESKTOP-0FP4EPJ MINGW64 ~
$ cd clj-template/

thomp@DESKTOP-0FP4EPJ MINGW64 ~/clj-template (master)
$ lein test
Compiling 1 source files to C:\Users\thomp\clj-template\target\default+test+test\class-files

lein test _bootstrap

-----------------------------------
   Clojure 1.10.1    Java 11.0.8
-----------------------------------

lein test tst.demo.core

Ran 3 tests containing 8 assertions.
0 failures, 0 errors.

thomp@DESKTOP-0FP4EPJ MINGW64 ~/clj-template (master)
$
于 2020-10-02T22:36:56.553 回答