java中的自定义ClassLoader,用于从hdfs加载jar

时间:2015-04-04 09:03:51

标签: java classloader hdfs

我想在程序中使用自定义java URL ClassLoader从HDFS加载jar。 我在互联网上找不到例子。我已经看到了从本地文件系统加载jar的示例,如下面的线程中所述:

Custom URLClassLoader

任何建议或工作示例?

感谢。

1 个答案:

答案 0 :(得分:1)

这就是你可以编写自定义类加载器的方法。代码是用scala编写的。你可以把它转换成java。

class HdfsClassLoaderclassLoader(classLoader: ClassLoader) extends URLClassLoader(Array.ofDim[URL](0), classLoader) {

    def addJarToClasspath(jarName: String) {
        synchronized {
            var conf = new Configuration
            val fileSystem = FileSystem.get(conf)
            val path = new Path(jarName);
            if (!fileSystem.exists(path)) {
                println("File does not exists")
            }
            val uriPath = path.toUri()
            val urlPath = uriPath.toURL()
            println(urlPath.getFile)
            addURL(urlPath)
        }
    }
}