【问题标题】:Namespace in Clojure project cannot be recognized by java code in Visual Studio CodeClojure 项目中的命名空间无法被 Visual Studio Code 中的 java 代码识别
【发布时间】:2021-05-18 03:17:40
【问题描述】:

我需要一些 Java 代码才能在 Clojure 项目中使用。按照这个page 学习如何在 Leiningen 中混合 Clojure/Java。该项目运行顺利,结果与预期相同。但是,当我在 vscode 中打开项目时,Lexer.java 中的命名空间“myproject.records.time”;它无法在 vscode 中识别,但可以在命令行“lein do run, clean”中识别。我已经在vscode中执行了命令“java:clean language server workspace”,但是错误依然存在。请评论如何在 vscode 中修复此错误?

命令行“lein do run, clean”。工作顺利

=> #'myproject.main/-main
({:type :error, :value "4"}
 {:type :error, :value "3"}
 {:type :error, :value "2"}
 {:type :error, :value "1"}
 {:type :error, :value "0"})
=> nil

在 Lexer.java 中无法使用 vscode 识别命名空间“myproject.records.time”

【问题讨论】:

    标签: java visual-studio-code clojure vscode-settings


    【解决方案1】:

    您需要将Clojure.jar 添加到当前项目中。

    参考:leiningen - how to add dependencies for local jars?

    【讨论】:

    • 感谢您的评论。这是 Leiningen 的一个 Clojure 项目。我们可以在 Leiningen 中使用 gradle 吗?
    • 对不起,我的误解,我已经编辑了我的答案,请试一试。
    • 感谢您的帮助。您的建议解决了部分错误。但是,用户定义库的错误无法解决。希望我能找到解决此页面错误的解决方案。阅读此页面“push-language.hampshire.edu/t/calling-clojure-code-from-java/…”。
    • 很高兴知道您的问题已得到解决。快乐编码。 :)
    【解决方案2】:

    总结了解决错误的过程。

    1. 下载 Clojure 的latest stable release。解压并找到文件clojure-x.y.z.jar。将此文件复制到您的项目中的某个位置(例如./lib/clojure-1.10.3.jar)。 # 谢谢王莫莉

    2. 将以下语句放入project.clj。

      :aot [myproject.records]

    3. 在项目目录下执行lein uberjar,会在./target/uberjar目录下生成一个jar文件

      例如./target/uberjar/XXX-0.1.0-SNAPSHOT.jar

    4. 在vscode的左侧,有一个名为Referenced Libraries的标签,将clojure-1.10.3.jar和XXX-0.1.0-SNAPSHOT.jar这两个文件加上+(标签右侧Referenced Libraries);分别。

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 2021-09-02
      • 1970-01-01
      • 2015-02-17
      • 2018-04-08
      • 1970-01-01
      • 2015-10-13
      • 2011-02-11
      • 2021-07-27
      相关资源
      最近更新 更多