Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hadoop中的OpenCV库_Java_Opencv_Hadoop - Fatal编程技术网

Java Hadoop中的OpenCV库

Java Hadoop中的OpenCV库,java,opencv,hadoop,Java,Opencv,Hadoop,我编写了一个使用OpenCV的简单应用程序。我将所有jar文件放在/usr/local/hadoop/lib文件夹中。运行hadoop作业时,出现以下错误: java.lang.Exception:java.lang.NoClassDefFoundError:com/googlecode/javacv/cpp/opencv_core$CvArr 位于org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:399) 原

我编写了一个使用OpenCV的简单应用程序。我将所有jar文件放在/usr/local/hadoop/lib文件夹中。运行hadoop作业时,出现以下错误:

java.lang.Exception:java.lang.NoClassDefFoundError:com/googlecode/javacv/cpp/opencv_core$CvArr 位于org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:399) 原因:java.lang.NoClassDefFoundError:com/googlecode/javacv/cpp/opencv_core$CvArr 位于java.lang.Class.forName0(本机方法) 位于java.lang.Class.forName(Class.java:270) 位于org.apache.hadoop.conf.Configuration.getClassByNameOrNull(Configuration.java:1486) 位于org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1456) 位于org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1545) 位于org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186) 位于org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:686) 位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:333) 位于org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:231) 位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 在java.util.concurrent.FutureTask.run(FutureTask.java:166)中 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 运行(Thread.java:724) 原因:java.lang.ClassNotFoundException:com.googlecode.javacv.cpp.opencv_core$CvArr 在java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在java.net.URLClassLoader$1.run(URLClassLoader.java:355) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:354) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 还有15个


知道如何解决这个问题吗?

您可以在运行hadoop作业时尝试使用选项
libjars
。请尝试以下操作:

hadoop jar yourjar.jar MainClass -libjars /path/to/external/jar

更多信息。

你能展示一下你是如何运行hadoop作业的吗?这就是我试图执行的方式:./bin/hadoop-jar/usr/local/MyApp.jar MainProc/examples/inputfile/usr/local/Output问题是,在执行hadoop作业时,我有一个输入和输出参数。如果我添加了-libjars,那么系统会说它需要一个输入和一个输出。如果在
-libjars/path/to/external/jar
之后添加输入和输出文件夹,它会工作吗?不会。下面是我现在输入的内容:./bin/hadoop-jar/usr/local/v.jar MainProc-libjars/usr/local/hadoop/lib/javacpp.jar/examples/input/usr/local/output,这是当参数不是2:Usage:MainProc时,如果在
-libjars
选项之前添加它们,系统会说的话?同样的错误(Usage:MainProc)因为争论不止两个。