- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个使用 Apache Hbase 作为其数据存储的应用程序。我围绕一些常见的 hbase 操作编写了一个 clojure 包装器,
https://github.com/mobiusinversion/hbase
并将其推送到 clojars。
在我的 hbase 包装器中,我导入了 Bytes 类:
(ns hbase.table
(:gen-class)
(:refer-clojure :exclude [get])
(:import [clojure.lang PersistentVector PersistentArrayMap]
[org.apache.hadoop.hbase.util Bytes]
[org.apache.hadoop.hbase.client Put Get HTable Scan]))
然后在另一个名为“wtf”的项目中,我将包装器声明为依赖项,这很有效,它只是将 jar 从 clojars 中拉下来。
MacBook-Pro-2:wtf $ lein do clean, deps
... blah blah
Retrieving org/mortbay/jetty/jsp-2.1/6.1.14/jsp-2.1-6.1.14.jar from central
Retrieving ant/ant/1.6.5/ant-1.6.5.jar from central
Retrieving commons-el/commons-el/1.0/commons-el-1.0.jar from central
Retrieving net/java/dev/jets3t/jets3t/0.6.1/jets3t-0.6.1.jar from central
Retrieving hsqldb/hsqldb/1.8.0.10/hsqldb-1.8.0.10.jar from central
Retrieving oro/oro/2.0.8/oro-2.0.8.jar from central
Retrieving org/eclipse/jdt/core/3.1.1/core-3.1.1.jar from central
Retrieving org/codehaus/jackson/jackson-mapper-asl/1.8.8/jackson-mapper-asl-1.8.8.jar from central
Retrieving hbase/hbase/0.1.1/hbase-0.1.1.jar from clojars
MacBook-Pro-2:wtf $
但是在新项目中找不到 Bytes 类(以及所有其他 Hadoop 类):
$ lein repl
nREPL server started on port 58693
REPL-y 0.1.10
Clojure 1.5.1
Exit: Control+D or (exit) or (quit)
Commands: (user/help)
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
(user/sourcery function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Examples from clojuredocs.org: [clojuredocs or cdoc]
(user/clojuredocs name-here)
(user/clojuredocs "ns-here" "name-here")
user=> (use 'hbase.schema)
ClassNotFoundException org.apache.hadoop.hbase.HTableDescriptor java.net.URLClassLoader$1.run (URLClassLoader.java:202)
user=> (use 'hbase.config)
ClassNotFoundException org.apache.hadoop.hbase.HBaseConfiguration java.net.URLClassLoader$1.run (URLClassLoader.java:202)
user=> (use 'hbase.table)
ClassNotFoundException org.apache.hadoop.hbase.util.Bytes java.net.URLClassLoader$1.run (URLClassLoader.java:202)
user=>
我不知道为什么 hadoop 类既没有被 Leiningen 作为依赖项引入,也没有打包为我的 clojars 部署的一部分。我怎样才能让这些类可见???
最佳答案
事实证明这与使用限定符声明依赖项的顺序有关:
这里没有注册HBase依赖
(defproject hbase "0.1.0"
:description "HBase Access in Clojure"
:license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"}
:url "https://github.com/mobiusinversion/hbase"
:dependencies [
[org.clojure/clojure "1.5.1"]
[org.apache.hadoop/hadoop-core "1.2.0"]
[org.apache.hadoop/hadoop-test "1.2.0" :scope "test"]
[org.apache.hbase/hbase "0.94.6.1" :classifier "tests" :scope "test"]
[org.apache.hbase/hbase "0.94.6.1"]]
:plugins [[lein-marginalia "0.7.1"]])
然而,这确实:
(defproject hbase "0.1.3"
:description "HBase Access in Clojure"
:license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"}
:url "https://github.com/mobiusinversion/hbase"
:dependencies [
[org.clojure/clojure "1.5.1"]
[org.apache.hadoop/hadoop-core "1.2.0"]
[org.apache.hbase/hbase "0.94.6.1"]
[org.apache.hadoop/hadoop-test "1.2.0"]
[org.apache.hbase/hbase "0.94.6.1" :classifier "tests" :scope "test"]]
:plugins [[lein-marginalia "0.7.1"]])
关于hadoop - Lein 在 Clojars 和依赖项上的部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17536693/
现在,当我运行 lein 时,它倾向于: (1) 杀死 lib/* 然后 (2) 重新安装/下载各种库到lib/ 现在,这是一个问题,因为我倾向于将我需要的 *.jars 复制到 lib/中,但随后
我跑了lein uberjar在我的项目上,它创建了相应的 jar 文件。当我运行 jar ClassNotFoundException: explodingdots.core被抛出。我指定了 exp
lein figwheel 和 lein cljsbuild auto 有什么区别,因为我相信它们都是用来编译 clojurescript 的。 使用一个比另一个有什么好处吗? 最佳答案 格威尔 它们
在我看来,lein run 和 lein Tampoline 之间的唯一区别是后者退出 Leiningen 的 JVM 以节省内存。 这似乎总是一个好主意,那么为什么这个功能不包含在lein run中
我正在尝试实现我正在使用的遗留运行时所需的 Java 接口(interface),并实例化此实现的实例以将其传递给运行时。但是当我运行 lein uberjar我看到一个异常,找不到该类。两个命名空间
我想从我的 lein repl 控制一些 lein-plugins(lein-cljs build、lein-aws、lein-beanstalk)。有没有办法做到这一点? 例如,我希望能够调用 插件
我正在制作一个部署在 Heroku 上的 Clojure/ClojureScript 网站。我正在使用 Leiningen 进行项目管理。 我想用 LESS 编写我的样式表。我需要构建过程将 LESS
新手 Clojure 和 leiningen 问题: 鉴于我下面项目中的代码片段,这适用于 lein repl : ==> (-main "something") 产生预期的“命令:某事......正
当前的问题是,当我使用 lein run 运行程序时,它会到达 (read-line) 部分,而我无法摆脱它,意思是:读取行永远不会返回。 相关代码如下: (def command (atom "")
在基于解放者的clojure项目中,我们使用datomic作为DB。将本地开发数据库迁移到S3托管的数据库并在项目上添加所需的依赖关系之后,我们无法启动REPL,但Liberator堆栈通过lein
假设我找到了一个很酷的 clojure 库,例如 https://github.com/clojurewerkz/buffy 现在我想使用它。而且它只存在于 github 上。 我该怎么做?我希望有一
我刚刚开始使用 lein 开始我的第一个 clojure 项目,代码如下: (ns fileops.core (:use [clojure.core :only (slurp)]
我一直在做的一个项目在使用 leiningen interactive 时突然开始抛出异常。运行“lein test”没问题,我的测试运行并通过了。异常仅在使用交互式时发生: Exception in
我有一个hello.clj如下。 (ns hello) (defn hi [] (println "HI")) 通常,我可以按如下方式使用main.clj中的此功能。 hello.clj位于包含mai
我想编写一个 shell 脚本来启动 lein repl,然后在保持 repl 运行的同时提供一些命令。 例如,我可能想做相当于: lein repl (dev) (setup) 我可以通过 echo
我一直在尝试设置 Clojure 以使用泛音。 但是,当我尝试在项目文件夹中启动 Lein 时收到此消息: Exception in thread "main" java.lang.Exception
我正在使用“lein uberjar”为我的项目制作一个可执行的 jar 文件。 jar 已正确创建并按预期运行。 我只想知道是否可以不将我的源 .clj 文件包含在生成的 .jar 中,因为我打算分
我是莱宁根的新手。 当我尝试执行以下操作时, $ lein clean jar 我有 Wrong number of arguments to clean task. Expected [] $ 如何
我想配置 Lein 以便我看到一个彩色的 REPL,就像 Emacs 的 nREPL。我怎样才能做到这一点? 我在谷歌上找不到任何帮助。我需要先学习 Bash 脚本吗? 最佳答案 Ultra ,“用于
我在OS X 10.10.5和Ubuntu 16.04上都运行Sublime Text 3 Build 3117。我刚刚在两者上都安装了Leiningen 2.6.1,然后开始在SublimeREPL
我是一名优秀的程序员,十分优秀!