hadoop 맵을 변경하려고합니다. 변경 사항없이 현재 컴파일되고 올바르게 실행되는 작업을 줄입니다.jar 파일을 내 보낸 후 Hadoop이 java.lang.VerifyError를 throw합니다.
작업의 일부로, 이제 파일을 전송하기 위해 S3에 연결합니다.
(매우 간단한) s3Connector 클래스를 테스트하고 실행하여 이클립스에서 실행했습니다. 그런 다음 내 축소 작업에 연결했습니다. hadoop에서 작업을 실행하려면 프로젝트를 jar 파일로 내 보낸 다음 hadoop에서 호출해야합니다. jar 파일은 Eclipse에서 문제없이 컴파일하고 내보내는 것처럼 보이지만 hadoop에서 실행할 때 java.lang.VerifyError 예외가 발생합니다.
java.lang.VerifyError: (class: com/extrabux/services/S3Connector, method:
connectToS3 signature:()V) Incompatible argument to function
몇 가지 다른 게시물 충돌하는 항아리 버전 종속성이있을 수 있음을 언급,하지만 내 이클립스 빌드 경로에, 나는 지정된 libs와에 대한 모든 최신 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 자격 증명을 주석 처리하면 문제가 사라집니다. 기본적으로, 나는 그것이 일식에서 어떤 종류의 도서관 수출 문제라고 생각하지만 그것을 찾는 방법을 모른다.
답변을 게시 해 주셔서 감사합니다. 내 하루를 절약했습니다 :) – vkris
AWS에 기증했을 때 한 걸음 더 나아가서 Amazon이 설치 한 hadoop이 0.7.x 라이브러리를 사용한다는 것을 알았습니다. 아마존의 hadoop을 사용하고 있다면 도움이되기를 바랍니다. – Zak
아마존 hadoop 서비스를 사용하고 있습니다. 나는 같은 문제가 있지만 lib /에서 jets3t-0.6.0.jar를 제거하더라도 여전히 작동하지 않습니다. 나는 너의 의견을 보았다. 0.8.0이 아닌 0.7.0 버전을 사용해야한다는 뜻입니까? – user571470