Я изменяю карту hadoop - уменьшите работу, которая в настоящее время компилируется и работает без моих изменений.
Как часть работы, теперь я буду подключаться к S3 для доставки файла.
Я разработал (очень простой) класс s3Connector, протестировал и запустил его в Eclipse,
затем пошел, чтобы подключить это к моей работе сокращения. Чтобы запустить задание в 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
В некоторых других публикациях упоминается, что могут быть конфликтующие зависимости версий jar, но в моем пути сборки eclipse я добавил все последние файлы jar для указанных библиотек и поместил их в верхнюю часть порядка путей сборки. 1008 *
Это настолько просто, насколько я могу выделить это:
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);
}
}
Даже тот простой класс умрет .. То же сообщение. Как только я закомментирую учетные данные AWS в конструкторе и RestS3Service, проблема исчезнет. По сути, я думаю, что это какая-то проблема с экспортом библиотеки из затмения, но я не знаю, как ее найти.