导出jar文件后Hadoop抛出java.lang.VerifyError
我正在改变一个hadoop地图 - 减少当前编译的工作,并且在没有我的更改的情况下运行正常。
作为工作的一部分,我现在将连接到S3以提供文件。
我开发了一个(非常简单的)s3Connector类,在eclipse中测试并运行它,
然后把它挂进我的减少工作。为了在hadoop中运行作业,我必须将项目导出为jar文件,然后从hadoop调用它。 jar文件似乎在没有问题的情况下编译和导出,但是当我在hadoop中运行它时,我得到一个java.lang.VerifyError异常。
java.lang.VerifyError: (class: com/extrabux/services/S3Connector, method:
connectToS3 signature: ()V) Incompatible argument to function
其他几篇文章提到可能存在冲突的jar版本依赖项,但在我的eclipse构建路径中,我添加了指定库的所有最新jar文件,并将它们推送到构建路径顺序的顶部。
这很简单,我可以把它分离到:
import org.jets3t.service.impl.rest.httpclient.RestS3Service;
import org.jets3t.service.security.AWSCredentials;
public class S3Connector {
protected RestS3Service s3Service;
protected AWSCredentials awsCredentials;
public S3Connector()
{
this.awsCredentials= new AWSCredentials("my secret 1", "my secret 2");
}
public void connectToS3() throws Exception
{
this.s3Service = new RestS3Service(this.awsCredentials);
}
}
即使是那个简单的类也会死...同样的消息。只要我在构造函数和RestS3Service中注释掉AWS凭据,问题就会消失。基本上,我认为这是eclipse中的某种库出口问题,但不确定如何找到它。
没有找到相关结果
已邀请:
1 个回复
览幕堤分