【问题标题】:Clojure FileNotFound exception when running uberjar, though file is in project source运行 uberjar 时出现 Clojure FileNotFound 异常,尽管文件在项目源中
【发布时间】:2014-04-12 22:50:27
【问题描述】:

我正在努力解决以下错误:

Exception in thread "main" java.io.FileNotFoundException: Could not locate composer/midi/short_message__init.class or composer/midi/short_message.clj on classpath: , compiling:(events.clj:12:1)

short-message的引用在events.clj的命名空间声明中:

(ns composer.ui.events
  (:use [seesaw core border chooser])
  (:require [composer.midi
             [io :as io]
             [time :as time]
             [player :as player]
             [short-message :as short]]))

这是short-message本身在short-message.clj中的命名空间声明:

(ns composer.midi.short-message
  (:require [composer.algorithm.transform :refer :all]
            [composer.algorithm.markov.transform :refer :all]
            [composer.midi [io :refer :all] [message :as message]]))

short-messagecomposer.midi 中的所有其他文件位于同一目录中,但这似乎是唯一导致问题的文件。事实上,在我的项目中验证了target 目录之后,这是唯一一个似乎不包含相应类文件的命名空间。我认为这可能是代码错误,但如果我尝试在 REPL 中使用 (load-file "src/composer/midi/short-message.clj") 加载文件,我没有任何问题。

【问题讨论】:

  • 人力资源部。 short-message.clj 似乎不是有效的文件名。将其更改为 short_message 似乎已经成功了……很奇怪。

标签: clojure compilation namespaces


【解决方案1】:

你的评论是对的。在 clojure 中,命名空间中的破折号对应于文件名中的下划线。所以你的文件名应该是你找到的 short_message.clj。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多