我在文件中使用外部 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/