java 中的自定义 ClassLoader,用于从 hdfs 加载 jar
Custom ClassLoader in java for loading jar from hdfs
我想在我的程序中使用自定义 java URL ClassLoader 从 HDFS 加载一个 jar。
我无法在互联网上找到示例。我已经看到从本地文件系统加载 jar 的示例,如以下线程中所述:
Custom URLClassLoader
任何建议或工作示例?
谢谢。
这就是您编写自定义 class 加载程序的方法。代码是用 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)
}
}
}
我想在我的程序中使用自定义 java URL ClassLoader 从 HDFS 加载一个 jar。 我无法在互联网上找到示例。我已经看到从本地文件系统加载 jar 的示例,如以下线程中所述:
Custom URLClassLoader
任何建议或工作示例?
谢谢。
这就是您编写自定义 class 加载程序的方法。代码是用 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)
}
}
}