![](/img/trans.png)
[英]java.lang.NoSuchMethodError is thrown in android application
[英]Hadoop Exception java.lang.NoSuchMethodError when calling hdfsOpenFile in hdfs C API
首先,我使用mvn和正确设置的环境变量构建了hadoop-2.7.2。 然后,我尝试在Apache网站上运行以下简单示例: C API libhdfs示例代码
#include "hdfs.h"
int main(int argc, char **argv) {
hdfsFS fs = hdfsConnect("default", 0);
const char* writePath = "/tmp/testfile.txt";
hdfsFile writeFile = hdfsOpenFile(fs, writePath, O_WRONLY |O_CREAT, 0, 0, 0);
if(!writeFile) {
fprintf(stderr, "Failed to open %s for writing!\n", writePath);
exit(-1);
}
char* buffer = "Hello, World!";
tSize num_written_bytes = hdfsWrite(fs, writeFile, (void*)buffer, strlen(buffer)+1);
if (hdfsFlush(fs, writeFile)) {
fprintf(stderr, "Failed to 'flush' %s\n", writePath);
exit(-1);
}
hdfsCloseFile(fs, writeFile);
}
然后我得到如下错误信息:
$不能从具有签名的组织org / apache / hadoop / fs / FileSystem类中找到方法创建(Lorg / apache / hadoop / fs / Path; Lorg / apache / hadoop / fs / permission / FsPermission; ZISJILorg / apache / hadoop / util /渐进式; Z)Lorg / apache / hadoop / fs / FSDataOutputStream;
$线程“主”中的异常java.lang.NoSuchMethodError:创建
$调用org.apache.hadoop.conf.FileSystem :: create((Lorg / apache / hadoop / fs / Path; Lorg / apache / hadoop / fs / permission / FsPermission; ZISJILorg / apache / hadoop / util / Progressable; Z )Lorg / apache / hadoop / fs / FSDataOutputStream;)失败了!
但是我确实可以在org.apache.hadoop.fs.FileSystem中找到“创建”函数: org.apache.hadoop.fs.FileSystem函数列表
有人知道发生了什么吗?
我必须在这里承认我的愚蠢问题。 我在链接定义中包含了错误的依赖关系。 因此,我的程序正在尝试从另一个库调用错误的create()...现在,我现在可以使用所有开源的hdfs API。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.