Я написал приложение, которое пыталось создать HBaseConfiguration по умолчанию, но когда я упаковываю приложение как jar, оно не будет работать должным образом, потому что оно пытается использовать zookeeper 127.0.0.1, а не то, которое указано в моем /etc/hbase/conf/hbase-site.xml
.Приложение может быть урезано до чего-то вроде этого:
object TestUtil extends App {
val hbaseTable = new HTable(HBaseConfiguration.create, "tableName")
println(hbaseTable)
}
Когда я запускаю это с помощью следующей команды, оно прекрасно работает:
CLASSPATH=`hbase classpath` java fully.qualified.name.TestUtil
Если я упаковываю его как jar и вызываюиспользуя 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 для Zookeeper, который отличается от конфигурации Zookeeperпо моему /etc/hbase/conf/hbase-site.xml
.Кажется, что jar игнорирует мой путь к классу, хотя я явно установил его в командной строке.
Как я могу заставить JVM соблюдать мой путь к классу при выполнении jar?