我写了一个试图创建默认HBaseConfiguration的应用程序,但是当我将应用程序打包为jar时,它将无法正常工作,因为它试图使用127.0.0.1的zookeeper,而不是我的/etc/hbase/conf/hbase-site.xml
中指定的那个。该应用程序可以被剥离下来是这样的:为什么我的jar看不到环境中的HBase配置?
object TestUtil extends App {
val hbaseTable = new HTable(HBaseConfiguration.create, "tableName")
println(hbaseTable)
}
当我运行这个使用下面的命令正常工作:
CLASSPATH=`hbase classpath` java fully.qualified.name.TestUtil
如果我将其打包作为一个罐子,用CLASSPATH='hbase classpath' java -jar TestUtil.jar
叫它再我得到以下错误:
org.apache.hadoop.hbase.ZooKeeperConnectionException: HBase is able to connect to ZooKeeper but the connection closes immediately.
我检查了日志,可以看到,它正在尝试连接到127.0.0.1的动物园管理员,这是从zooke不同eper配置在我的/etc/hbase/conf/hbase-site.xml
。即使我明确地将它设置在命令行上,该jar似乎仍在忽略我的类路径。
如何让JVM在执行jar时遵循我的类路径?