如何解决无法使用Clojure CLI工具执行主要功能“运行”-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,所以我安装了Alex所说的最新版本,并且运行正常,但是后来我又运行了'describe',版本没有变化。
我知道了:
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 ""}
解决方法
-X功能已添加到最新版本的Clojure工具(1.10.1.697)中。从错误消息中,我觉得这是一个较旧的版本。您可以使用clojure -Sdescribe
来查看您的版本吗?
您可以在https://github.com/clojure/tools.deps.alpha/wiki/clj-on-Windows上找到安装说明并链接到最新版本
,从-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
显示它位于位置1
中。
尝试重新运行安装脚本并选择安装位置:1
可能是在Windows上运行Clojure的一种更简单的方法
我无法忍受Powershell或更旧的CMD.EXE工具。恕我直言,使用 Git for Windows 在bash中运行要容易得多。
步骤:
- 安装JDK 14 from the Oracle site。
- 安装GitForWindows
- 使用GitBash窗口克隆the clj-template repo。请注意,Windows并不总是在您的主目录中启动您。您可能需要类似
> cd # go to home dir
> git clone https://github.com/io-tupelo/clj-template
> cd clj-template
- 安装
lein
from its homepage。复制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)
$
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。