java - 类路径中的外部 jar 和 HBase

标签 java jar classpath hbase

我在文件中使用外部 jar 时遇到问题。我总是得到:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration`  
at this line: `Configuration config = HBaseConfiguration.create();

这个文件位于类路径上,我在运行 jar 时设置选项:

$ java -jar hbase.jar -classpath "/usr/lib/hbase/*:/usr/lib/hadoop/*"

调用此命令后该文件编译成功:

$ javac -classpath "/usr/lib/hbase/*:/usr/lib/hadoop/*" HBaseScanner.java

要做什么?

最佳答案

如果类加载器无法初始化类的静态成员(例如抛出异常),JVM 将抛出 java.lang.NoClassDefFoundError。或者,如果它找不到由此类中的静态初始值设定项访问的另一个类。这看起来就像正在发生的事情,当类加载器厌倦加载 HBaseConfiguraton 时,此类 HBaseConfiguration 正在期待它无法获得的东西,从而导致异常,即丢失。
调试此类故障真是太运气了。

编辑: 找出缺少的内容的最简单方法是在连接了所有 HBase 源的调试器中启动程序(例如在 Eclipse 下),并跟踪 HBaseConfiguration.create() 调用。

关于java - 类路径中的外部 jar 和 HBase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3502332/

相关文章:

java - 从头开始编写 Java 标准类库替代方案

java - org.hibernate.HibernateException : Current transaction is not in progress after migrate to Hibernate 5

shell - maven zip uber-jar 和 shell 脚本

java - Eclipse 项目未添加到构建路径

java - 尝试打开 jar 时发生意外错误

java - 导出 jar 时将 Javadoc 添加到 Eclipse 项目

playframework-2.0 - 使用 SCCT 计算代码覆盖率时,配置文件不在 Play Framework 2.0 类路径中

java - 在Java中沿着曲线写入文本

java - 我应该测试(复制)数据,还是只测试行为?

java - 如何在 Google map 上的标记上方添加文本?