我正在开发一个将 Hadoop 的 MapReduce 框架与 Xuggle 集成的程序。为此,我正在实现一个IURLProtocolHandlerFactory
从内存中的 Hadoop 数据对象读取和写入的类。
你可以在这里看到相关代码: https ://gist.github.com/4191668
这个想法是用 UUID 注册类BytesWritable
中的每个对象,IURLProtocolHandlerFactory
这样当我稍后在打开文件时引用该名称时,它会返回一个IURLProtocolHandler
附加到该BytesWritable
对象的实例,我可以从内存中读取和写入。
问题是我得到这样的异常:
java.lang.RuntimeException: could not open: byteswritable:d68ce8fa-c56d-4ff5-bade-a4cfb3f666fe
at com.xuggle.mediatool.MediaReader.open(MediaReader.java:637)
(另请参阅发布的链接下)
调试时,我看到在工厂中正确找到了对象,更重要的是,它们甚至在协议处理程序中被读取。如果我从输出文件中删除侦听器,也会发生同样的情况,所以问题已经出在输入上。深入挖掘 Xuggle 的代码,我找到了 JNI 代码(它试图打开文件),但我没有比这更进一步的了。这显然会返回一个错误代码。
XugglerJNI.IContainer_open__SWIG_0
我真的很感激一些提示下一步去哪里,我应该如何继续调试。也许我的实现有缺陷,但我看不到。