gpt4 book ai didi

java - 分布式缓存 jar 在类路径中,但得到ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-02 21:27:42 24 4
gpt4 key购买 nike

使用HBaseTestingUtility我将启动一个小型集群。

testUtil = new HBaseTestingUtility(configuration);
testUtil.startMiniCluster();

并提供我的jar放在DistributedCache的classpath中
final String aJarResourcePath = Thread.currentThread().getContextClassLoader()
.getResource("abc/a-1.0.jar").getPath();
final FileSystem fs = FileSystem.get(configuration);
final Path pathToArtifacts = new Path("/Runtime/a-artifacts");
fs.mkdirs(pathToArtifacts);
fs.copyFromLocalFile(new Path(aJarResourcePath), pathToArtifacts));

DistributedCache.addFileToClassPath(disqualified, configuration);

在我的MapFn上,我使用的是jar-1.0.jar。我可以在MapFn中看到 jar
final Path[] fus = DistributedCache.getFileClassPaths(config);

因此,我认为该jar位于classpath中并指向HDFS位置,但是在尝试创建对象时出现classnotfoundexception。我不确定发生了什么请帮助。

最佳答案

我不知道这是否是造成您问题的原因,但是addFileToClasspath的2参数重载在Hadoop 1.2.1中是deprecated。 (实际上,在Hadoop 2.7.2中,DistributedCache类整体上是deprecated!)Javadocs并未说明为什么不赞成使用该方法,因此很难知道这是否可能是问题所在。

更新

进一步的研究表明,您的问题实际上可能是JAR文件是not being expanded。尝试改用addArchiveToClasspath

关于java - 分布式缓存 jar 在类路径中,但得到ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com