【问题标题】:Problems with importing package from Github从 Github 导入包的问题
【发布时间】:2019-01-27 19:05:44
【问题描述】:

在我开始之前,你可能需要知道三件事:

  1. 我没有 Java 背景
  2. 我是 Clojure 新手 - 开始学习它
  3. 问题与我的“培训”包有关kennyfy

TL;DR 版本我无法在项目中导入/使用我的培训包

加长版
我给自己设定了一个目标——编写简单的 API,将文本转换为 kennyspeak。在此之前我已经创建了一个包(使用默认的 lein 模板)。

我尝试将此包导入我的 API。

project.clj 的一部分如下所示:

:repositories [["jitpack" "https://jitpack.io"]]
:dependencies [[com.github.radmen/clojure-kennyfy "0.1.2"]]

lein deps 获取包没有任何问题。

当我尝试使用它时,Clojure 失败并显示以下消息:

kennyfy-api.core=> (radmen.kennyfy/kenny-speak "foo")

ClassNotFoundException radmen.kennyfy  java.net.URLClassLoader.findClass (URLClassLoader.java:382)

我理解错误,但我不知道为什么没有导入这个类。
我很确定,这可能与包中存储的元数据有关,导致导入失败。

我做错了什么?

谢谢

$ java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (build 1.8.0_192-b26)
OpenJDK 64-Bit Server VM (build 25.192-b26, mixed mode)

$ lein version
Leiningen 2.8.3 on Java 1.8.0_192 OpenJDK 64-Bit Server VM

Clojure 1.9.0

【问题讨论】:

  • ["jitpack" "https://jitpack.io"] 必须是 [["jitpack" "https://jitpack.io"]]
  • 对我有用,顺便说一句。尝试重新启动您的 repl。
  • 谢谢,@akond。我错误地复制粘贴了:repositories 部分。在项目中,设置正确。
  • @akond 我又试了一次,问题是一样的。也许这取决于 Java/Clojure/Leiningen 版本?我会把它们放在帖子里。
  • 你是 requireing radmen.kennyfy 命名空间吗?

标签: clojure leiningen


【解决方案1】:

clojure 命名空间在第一次需要时被加载。

foo.core=> (radmen.kennyfy/kenny-speak "foo")

Execution error (ClassNotFoundException) at java.net.URLClassLoader/findClass (URLClassLoader.java:382).
radmen.kennyfy
foo.core=> (require '[radmen.kennyfy :as kennyfy])
nil
foo.core=> (kennyfy/kenny-speak "foo")
"mpfppfppf"
foo.core=> (radmen.kennyfy/kenny-speak "foo")
"mpfppfppf"
foo.core=> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 2020-07-20
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 2017-07-22
    相关资源
    最近更新 更多