Я использую hasoop 2.2.0 для выполнения работы по сокращению карты на Amazon Web Services Red Hat 6.4. Файл Jar, который я использую, был создан на моем локальном компьютере Windows 7. Карта упрощает выполнение заданий при локальной установке Hadoop на моем компьютере под управлением Windows 7, но когда я пытаюсь запустить его на экземпляре Amazon, я получаю следующую ошибку:
Exception in thread "main" java.lang.UnsupportedClassVersionError: mapReduce/Tes
tXMLConfig : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.hadoop.util.RunJar.main(RunJar.java:205)
Я провел некоторое исследование, и кажется, что эта ошибка возникает при запуске Jar файла, который был создан в более новой версии Java, в системе, на которой установлена более старая версия Java. Однако, когда я запускаю "java -version" в моей системе Windows 7 (где Jar файл построен с использованием Eclipse Kepler), он дает мне следующее:
java-версия "1.8.0" Java (TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot (TM) 64-разрядная серверная VM (сборка 25.0-b70, смешанный режим)
Когда я запускаю его на своем экземпляре Amazon Web Services Red Hat 6.4, он также дает:
java-версия "1.8.0" Java (TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot (TM) 64-разрядная серверная VM (сборка 25.0-b70, смешанный режим)
Обе системы используют одну и ту же сборку Java, поэтому я не уверен, что проблема с несогласованными версиями Java может быть проблемой. В Eclipse, когда я перехожу в Window> Java> Complier, я вижу, что "Уровень соблюдения компилятора" равен 1.7. Но Hadoop с Java 1.8 должен иметь возможность запускать файлы Jar, созданные на старых версиях Java (он работает на машине под управлением Windows 7 с помощью java 1.8).
Кажется, я не вижу здесь никакой проблемы. Любая помощь будет высоко ценится!
Попробуйте установить переменную среды JAVA_HOME в домашний каталог вашего JDK. Я ранее сталкивался с этой ошибкой, и моя java -version была правильной, но JAVA_HOME не был установлен. После установки JAVA_HOME в мое JDK Contents Home я больше не сталкивался с этой проблемой.
Примечание. Это произошло в Macbook для меня и с другим программным обеспечением.
JAVA_HOME
должен быть установлен в базовый каталог установки Java, а не в каталогbin
.