NoClassDefFoundError:org / apache / hadoop / conf / Configuration

时间:2015-08-29 10:51:17

标签: java noclassdeffounderror oozie

我正在尝试安装oozie并收到此错误。我有hadoop 2.7.1,maven 3.3.3。对此有何建议?

  

玉山@ ubuntu的:〜$   ' /usr/local/oozie/oozie/Oozie/oozie-4.3.0-SNAPSHOT/bin/oozie-setup.sh'   sharelib create -fs hdfs:// hadoopcluster:10000设置   CATALINA_OPTS =" $ CATALINA_OPTS -Xmx1024m"

     

错误:发生了JNI错误,请检查您的安装和   再次尝试线程中的异常" main" java.lang.NoClassDefFoundError:   org / apache / hadoop / conf /配置在   java.lang.Class.getDeclaredMethods0(Native Method)at   java.lang.Class.privateGetDeclaredMethods(Class.java:2701)at at   java.lang.Class.privateGetMethodRecursive(Class.java:3048)at   java.lang.Class.getMethod0(Class.java:3018)at   java.lang.Class.getMethod(Class.java:1784)at   sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)     在   sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)   引起:java.lang.ClassNotFoundException:   org.apache.hadoop.conf.Configuration at   java.net.URLClassLoader.findClass(URLClassLoader.java:381)at   java.lang.ClassLoader.loadClass(ClassLoader.java:424)at   sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)at at   java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 7更多

2 个答案:

答案 0 :(得分:2)

您需要将oozie所需的所有罐子添加到工作目录(oozie-4.3.0-SNAPSHOT)中名为libext的新文件夹中,请查看oozie docs

中的以下段落
  

默认情况下,oozie war不包含hadoop和hcatalog库,   但是他们需要oozie才能工作。

     

添加这些库有两个选项:

     
      
  1. 在安装时,将hadoop和hcatalog库复制到libext并运行oozie-setup.sh来设置oozie war。

  2.   
  3. 使用-Puber构建,它将在oozie战争中捆绑所需的库。

  4.   

所以要解决你需要的问题:

1-在扩展Oozie的目录中创建一个libext /目录。

2-如果使用ExtJS库将ZIP文件复制到libext /目录。

3-如果战争中尚未包含hadoop和hcatalog库,请将相应的库添加到libext /目录。 (在您的情况下),您可以将hadoop项目项目中的所有罐子复制到libext文件夹。

重要提示:libext文件夹中的jar版本应与构建过程中安装的版本相匹配。

您可以找到在构建过程中使用的pom文件中下载的版本。

答案 1 :(得分:0)

  Vue.component('todo-item', {
      template: '<li>This is a todo</li>',
      methods: {
        test: function() {
            this.$root.aNewFunction();
        }
      },
      mounted() {
        this.test();
      }
    })

    new Vue({
      el: '#app',
      template: '<todo-item></todo-item>',
      methods: {
        aNewFunction: function() {
            alert("inside");
        }
      }
    })