【问题标题】:java.io.FileNotFoundException: Could not locate clojure/spec/alpha__init.class or clojure/spec/alpha.clj on classpathjava.io.FileNotFoundException:无法在类路径上找到 clojure/spec/alpha__init.class 或 clojure/spec/alpha.clj
【发布时间】:2020-04-29 02:42:15
【问题描述】:

我试图了解 Clojure 规范。在设置 clojure 项目时,我在需要 clojure.spec.alpha 时遇到以下错误:

Exception in thread "main" java.io.FileNotFoundException: Could not locate clojure/spec/alpha__init.class or clojure/spec/alpha.clj on classpath., compiling:
at clojure.lang.Compiler.load(Compiler.java:7391)
at clojure.lang.Compiler.loadFile(Compiler.java:7317)
at clojure.main$load_script.invokeStatic(main.clj:275)
at clojure.main$script_opt.invokeStatic(main.clj:335)
at clojure.main$script_opt.invoke(main.clj:330)
at clojure.main$main.invokeStatic(main.clj:421)
at clojure.main$main.doInvoke(main.clj:384)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:379)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)

我的项目.clj:

(defproject testing "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.9.0"]
                 [org.clojure/spec.alpha "0.1.143"]
                 [org.clojure/core.specs.alpha "0.1.10"]])

和core.clj:

(ns testing.core
  (:require [clojure.spec.alpha :as s]))

(defn foo
  "I don't do a whole lot."
  [x]
  (println x "Hello, World!"))

如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 同样的 project.clj 和 core.clj 正在为我工​​作。我在堆栈跟踪中注意到com.intellij;你怎么运行这个?是否可以在命令行中运行项目目录下的lein repl
  • 能否请您发布lein repl 命令的输出?
  • lein repl 对我来说也可以。你能描述一下你是如何运行它的吗?
  • 这是我尝试运行 lein repl 的时候:lein repl nREPL server started on port 61605 on host 127.0.0.1 - nrepl://127.0.0.1:61605 REPL-y 0.3.7, nREPL 0.2.12 Clojure 1.9.0 Java HotSpot(TM) 64-Bit Server VM 1.8.0_151-b12 Docs: (doc function-name-here) (find-doc "part-of-name-here") Source: (source function-name-here) Javadoc: (javadoc java-object-or-class-here) Exit: Control+D or (exit) or (quit) Results: Stored in vars *1, *2, *3, an exception in *e
  • 我只是尝试运行 core.clj

标签: clojure


【解决方案1】:

我做了一个lein clean,它开始工作了

【讨论】:

  • 如果有请提供一些细节。
【解决方案2】:

我遇到了同样的错误,我不知道 clojure,但必须修复一些 NoClassDefFoundError 异常,使用 org.apache.storm.kafka.KafkaSpout 测试 Kafka Storm。

第一个例外是:NoClassDefFoundError: clojure/lang/IFn

我通过在类路径中包含 clojure-1.9.0.jar 来解决此问题。

接下来,这个异常:

FileNotFoundException: Could not locate clojure/spec/alpha__init.class or clojure/spec/alpha.clj on classpath

后来意识到他们还有另一个罐子spec.alpha-0.1.143.jar

希望这对其他人有帮助!

【讨论】:

  • 如果添加 clojure-1.9.0 那么storm不会抱怨类路径上有多个版本的Clojure吗?
  • 我没有看到那个错误。不要指望它基于此:stackoverflow.com/questions/34728795
【解决方案3】:

对于那些在 1.9 上遇到此问题的人,请参阅https://groups.google.com/forum/#!msg/clojure/-ovhQXtzhgw/XBm_rfcICgAJ

使用 1.8,您只需运行 .m2 中的 java -jar clojure-1.8.0.jar,RELP 就会立即启动。在 1.9 中,情况不再如此。您需要默认情况下在 .m2 中可能没有的其他库。

如果您基于official guide 安装 Clojure,您将拥有它们。

【讨论】:

    【解决方案4】:

    对我有用的是将 test.check 库作为依赖项添加到我的类路径

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 2016-02-09
      相关资源
      最近更新 更多