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
Clojure 创建deps.edn文件时出现问题_Clojure_Clojure Java Interop_Clojure Contrib - Fatal编程技术网

Clojure 创建deps.edn文件时出现问题

Clojure 创建deps.edn文件时出现问题,clojure,clojure-java-interop,clojure-contrib,Clojure,Clojure Java Interop,Clojure Contrib,各位,我决定完全重写这篇文章,以清晰的方式展示它 首先,感谢大家的支持。我很感激 这是“Clojure研讨会-Packt”中的练习,我遇到了以下难题: (我的IDE是IntelliJ,我使用的是Windows) 练习4.10:从CSV文件导入数据 1。在计算机上方便的地方创建一个文件夹。 我决定创建一个全新的项目 在选择两者之间有什么区别吗?我大部分时间都使用Leiningen,但我应该使用Deps吗?因为我要使用Deps.edn文件 2。将match_scores_1991-2016_UNIN

各位,我决定完全重写这篇文章,以清晰的方式展示它

首先,感谢大家的支持。我很感激

这是“Clojure研讨会-Packt”中的练习,我遇到了以下难题:

(我的IDE是IntelliJ,我使用的是Windows)

练习4.10:从CSV文件导入数据

1。在计算机上方便的地方创建一个文件夹。

我决定创建一个全新的项目

在选择两者之间有什么区别吗?我大部分时间都使用Leiningen,但我应该使用Deps吗?因为我要使用Deps.edn文件

2。将match_scores_1991-2016_UNINDEXED.csv文件下载到您创建的文件夹中。(在此继续)

但是我应该在哪里下载这个文件呢?进入项目文件内的src文件或任何文件工作?有什么区别吗

我决定存钱

3。在编辑器中的同一文件夹中,创建一个包含以下内容的deps.edn文件:

{:deps
 {org.clojure/data.csv {:mvn/version "0.1.4"}
  semantic-csv {:mvn/version "0.2.1-alpha1"}}}
user> (require '[clojure.data.csv :as csv])
nil
user> (require '[clojure.java.io :as io])
nil
user> (with-open [r (io/reader "match_scores_1991-2016_unindexed_csv.csv")]
         (first (csv/read-csv r)))
所以,我创建了一个文件

4。通过计算REPL中的以下表达式,验证一切正常:

{:deps
 {org.clojure/data.csv {:mvn/version "0.1.4"}
  semantic-csv {:mvn/version "0.2.1-alpha1"}}}
user> (require '[clojure.data.csv :as csv])
nil
user> (require '[clojure.java.io :as io])
nil
user> (with-open [r (io/reader "match_scores_1991-2016_unindexed_csv.csv")]
         (first (csv/read-csv r)))
为此项目创建了新的本地Clojure REPL

但是当我要计算测试表达式时,它在计算第二个和第三个表达式时显示了一个错误

评估“clojure.data.csv:as csv”时出现以下错误:

Execution error (FileNotFoundException) at csv-example.core/eval1549 (form-init2604783929697477049.clj:1).
Could not locate clojure/data/csv__init.class, clojure/data/csv.clj or clojure/data/csv.cljc on classpath.
我错过了什么?我已经尝试了好几天来解决这个问题,但我没有找到任何答案


谢谢大家!

我将尝试回答这里的所有问题,并让您进入下一阶段:

  • Leiningen使用
    project.clj
    文件。Clojure CLI使用
    deps.edn
    文件。由于本书要求您创建
    deps.edn
    文件,因此您需要使用Clojure CLI而不是Leiningen来启动REPL和/或运行代码。下面将对此进行详细介绍

  • 本书希望您将
    .csv
    文件下载到步骤1中创建的任何文件夹中。包含
    deps.edn
    文件的文件夹。看看你的截图,看起来你让Cursive/IntelliJ创建了一个基于Leiningen的项目。如果重新开始并要求Cursive/IntelliJ创建一个基于Deps的项目,则项目顶部将有一个
    Deps.edn
    文件,您可以对其进行编辑,使其看起来像本书所需要的,最终您将得到:

    • deps.edn
    • match_scores_1991-2016_unindex.csv
    • src
    (以及草书/IJ可能创建的其他一些文件)

  • 根据我在2中的评论。在上面,您将有一个
    deps.edn
    文件——由Cursive/IJ创建——您可以在项目顶部编辑该文件

  • 您遇到的错误是因为您创建了一个Leiningen项目,然后启动了一个Leiningen REPL——它不知道
    deps.edn
    ,因此它看不到您在那里添加的内容(即使您将它放在项目的顶部,
    project.clj
    )。因此,Leiningen不知道您需要CSV库,因此当您尝试
    要求它时,它在REPL中不可用——并且因为
    要求
    失败,您没有获得
    CSV
    别名,因此对
    CSV/读取CSV
    的调用编译失败

  • 关于Clojure CLI的两点:

    a。它的使用比Leiningen简单得多,并且在项目中需要的结构要少得多。您可以在命令行手动创建基于Deps的项目。打开命令提示符(
    cmd.exe
    ),可以执行以下操作:

    C:\Users\seanc>mkdir myproject
    
    C:\Users\seanc>cd myproject
    
    C:\Users\seanc\myproject>notepad deps.edn
    
    C:\Users\seanc\myproject>dir
     Volume in drive C is Local Disk
     Volume Serial Number is 4459-1FFE
    
     Directory of C:\Users\seanc\myproject
    
    01/05/2021  02:24 PM    <DIR>          .
    01/05/2021  02:24 PM    <DIR>          ..
    01/05/2021  02:25 PM               101 deps.edn
                   1 File(s)            101 bytes
                   2 Dir(s)  158,998,511,616 bytes free
    
    C:\Users\seanc>mkdir-myproject
    C:\Users\seanc>cd myproject
    C:\Users\seanc\myproject>notepad deps.edn
    C:\Users\seanc\myproject>dir
    驱动器C中的卷是本地磁盘
    卷序列号为4459-1FFE
    C:\Users\seanc\myproject目录
    2021年5月1日下午02:24。
    2021年5月1日下午2:24。。
    2021年5月1日02时25分101副教育部
    1个文件101字节
    2个目录15899851616字节可用
    
    (然后您可以将
    .csv
    文件下载到
    myproject
    中,然后按照书中可能显示的方式启动REPL——我希望它建议您在该文件夹中运行
    clj
    命令)

    b。这里是您遇到问题的地方:在Clojure世界中,Windows并没有得到很多工具和库的很好支持——几乎所有Clojure开发人员都使用Mac或Linux。即使是那些使用Windows的人也通常使用WSL2(在Windows 10上)和Linux风格,如Ubuntu。因为这比在Windows上使用工具更容易

    Windows上的Powershell提供了Clojure CLI的预发布版本:

    如该页底部所述,安装
    Scoop
    然后使用它安装Clojure CLI更容易。然后使用Powershell而不是命令提示符


    我不知道您对WSL2/Linux或Powershell的感觉如何——因为您是编程新手,我怀疑这一切都会显得有些复杂和令人畏惧。你可能会考虑放弃“CuljureWorksWord”(Pad Toots通常不是很好),或者找到另一本书或在线教程,让你通过<强>使用LeINGINE< <强>(最好是在Windows上,但这可能很难找到,因为很少有Culjurias使用Windows)如果你选择使用deps.edn,你可以按照肖恩·科菲尔德在文章中的评论来解决这个问题

    或者,如果你更喜欢leiningen,你可以通过添加

    
    [org.clojure/data.csv   "1.0.0"]
    [semantic-csv           "0.2.1-alpha1"]
    
    
    在project.clj文件中的:dependencies键处


    很难说你有什么问题。步骤3可以使用任何编辑器完成。deps.edn是一个文本文件。你能解释一下你试过什么吗