Прямые ссылки на источник для некоторых популярных программ в coreutils
:
cat
(767 строк) chmod
(570 строк) cp
(2912 строк) cut
(831 строка) date
(570 строк) df
(1718 линии du
(1112 строк) echo
(272 строки) head
(1070 строк) hostname
(116 строк) kill
(312 строки) ln
(651 строка) ls
(4954 строки) md5sum
(878 строк) mkdir
(306 строк) mv
(512 строк) nice
(220 строк) pwd
(394 строки) rm
(356 строк) rmdir
(252 строки) shred
(1325 строк) tail
(2301 строк) tee
(220 строк) touch
(437 строк) wc
(801 строк) whoami
(91 строка) Показанный номер версии описывает версию JRE, совместимую с файлом класса.
Сообщенные основные номера:
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
(Источник: Wikipedia )
Чтобы исправить настоящую проблему, вы должны попробовать либо запустить Java-код с более новой версией Java JRE, либо указать целевой параметр компилятору Java, чтобы дать команду компилятору создать совместимый код с более ранними версиями Java.
Например, для генерации файлов классов, совместимых с Java 1.4, используйте следующую командную строку:
javac -target 1.4 HelloWorld.java
С более новыми версиями компилятора Java вы, вероятно, получите предупреждение о том, что путь класса bootstrap не задан. Более подробную информацию об этой ошибке можно найти в сообщении в блоге Новое предупреждение javac для установки более старого источника без bootclasspath .
В меню Eclipse Окно -> Предпочтения -> Java -> Компилятор также проверяет «Настроить проект Настройки ".
Если у вас есть ошибка с той же версией Java: попробуйте вручную удалить папку сборки вашего проекта. Затем перезапустите Eclipse.
Эта ошибка означает, что вы пытаетесь загрузить файл класса «Java», который был скомпилирован с более новой версией Java, чем вы установили.
Например, ваш файл .class
мог быть скомпилирован для JDK 7, и вы пытаетесь запустить его с помощью JDK 6.
Таким образом, решение будет либо:
Для разработчиков это может произойти, если другой разработчик проверяет файл .class, и у них есть более новая версия java, чем у вас есть.
Как было сказано в другом месте несколькими людьми, Java-программа запускается на более старой версии Java, чем та, для которой она была скомпилирована. Он должен быть «скомпилирован» для обратной совместимости. Другими словами, существует несоответствие между исходными и целевыми версиями Java.
Изменение параметров в меню Eclipse не отвечает на исходный плакат, который сказал, что он / она не использует Eclipse. В OpenJDK javac версии 1.7 вы можете перекрестно скопировать для 1.6, если вы используете параметры -source
и -target
, плюс укажите rt.jar -файл целевой версии (то есть более старую) во время компиляции. Если вы действительно установите 1.6 JRE, вы можете указать на его установку (например, /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar на Ubuntu, / usr / jdk / jdk1. 6.0_60 / jre / lib / rt.jar на SunOS. Извините, я не знаю, где он находится в системе Windows). Например:
javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java
Похоже, вы можете просто скачать rt.jar из Интернета и указать на него. Это не слишком элегантно, хотя:
javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java
Наиболее распространенной проблемой является некорректная конфигурация вашей переменной JAVA_HOME
, которая должна указывать на нужную библиотеку Java Development Kit, если у вас несколько установленных.
Чтобы найти папку SDK Java, запустите следующие команды:
jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
Чтобы проверить, какой java (openjdk) вы установили, проверьте через:
dpkg -l "openjdk*" | grep ^i
или :
update-java-alternatives -l
Чтобы изменить его, используйте:
update-alternatives --config java
Префикс с sudo
, если требуется.
, чтобы выбрать альтернативную версию java.
Или проверьте, какие доступны для установки:
apt-cache search ^openjdk
Префикс с sudo
при необходимости.
Затем вы можете установить, например:
apt-get install openjdk-7-jre
Префикс с sudo
при необходимости.
Установить / обновить соответствующий пакет с помощью:
yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
Пакет
java-1.7.0-openjdk
содержит только Java Runtime Environment. Если вы хотите разработать Java-программы, тогда установите пакетjava-1.7.0-openjdk-devel
.BSD
В коллекции портов FreeBSD имеется пакет OpenJDK 7, называемый openjdk7 , который, вероятно, необходимо переконфигурировать.
Смотрите: Страница вики OpenJDK .
Windows
Просто установите соответствующую Java SE Development Kit с сайта Oracle или установить
Jenkins
Если вы столкнулись с этой проблемой с Jenkins, см.:
Однако следует выбрать правильную версию Java (новее) с
update-alternatives
.
У меня возникла проблема, когда мне приходилось запускать компиляцию Maven в моем проекте из командной строки для запуска моих модульных тестов; если я внес изменения в тестовый класс и позволю Eclipse автоматически перекомпилировать его, тогда я получил ошибку «Unsupported major.minor version 51.0».
У меня есть как JDK6, так и JDK7, но все мои JRE настройки указывали на 1.6, как на pom, так и на странице свойств проекта в Eclipse.
Наконец, я попытался закрыть проект и снова открыть его, и это, казалось, исправило это! НТН
В моем случае проблема была в конфигурации времени выполнения сервера:
Проверьте, что JRE - это необходимая версия:
Проект был в версии 1.7, а сервер JRE был установлен как 1.6, после того, как он перешел к правильной версии Java, которую он начал нормально.
У вас может быть библиотека JAR, скомпилированная в Java 7, и у вас есть только Java 6 как Java Runtime. Это может случиться с некоторыми новыми библиотеками.
Вы скомпилировали свой Java-класс с JDK 7, и вы пытаетесь запустить тот же класс на JDK 6.
Если вы столкнулись с этой проблемой при использовании Maven , вы можете скомпилировать свой код с помощью подключаемого модуля Maven Compiler .
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
.....
UPDATE: установите source
и target
на 1.8
, если вы используете JDK 8.
О Mac OS X Я смог решить эту проблему, установив переменную JAVA_HOME:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
Была ли эта проблема, когда я вернулась на Java 6 и попыталась запустить классы, ранее скомпилированные с помощью Java 7. Что для меня работало, было Preferences> java> compiler -> установить уровень соответствия 1.6 и, в решающей степени, «настроить параметры проекта» ..
Как это исправить?
blockquote>Эта ошибка означает, что JRE, который используется для выполнения вашего кода класса, не распознает используемую версию Java. Обычно, поскольку версия Java, которая сгенерировала ваш файл класса (т.е. скомпилировала его), является более новой.
Чтобы исправить это, вы можете либо
a) Скомпилировать ваши источники Java с тем же, или более старой версии компилятора Java, который будет использоваться для его запуска. т. е. установить соответствующий JDK.
b) Скомпилировать ваши источники Java с более новой версией компилятора Java, но в режиме совместимости. т.е. используйте параметр
-target
.c) Запустите скомпилированные классы в JRE, которая является той же самой или новой версией, что и JDK, используемый для компиляции классов.
Вы может проверить версии, которые вы используете в настоящий момент с помощью
javac -version
для компилятора, иjava -version
для среды выполнения.Должен ли я установить JDK и настроить свою переменную PATH на JDK вместо JRE?
blockquote>Для компиляции, конечно же, установите и настройте конкретный JDK, который вы хотите.
Для среды исполнения вы можете использовать ту, которая поставляется с JDK или автономный JRE, но независимо от того, убедитесь, что вы установили правильные версии и что вы настроили свой PATH таким образом, чтобы не было сюрпризов.
В чем разница между переменной PATH в JRE или JDK?
blockquote>Переменная среды PATH сообщает командной оболочке, где нужно искать введенную команду. Когда вы набираете
java
, интерпретатор командной оболочки будет просматривать все местоположения, указанные в переменнойPATH
слева направо, чтобы найти исполняемый файл исполняемого файлаjava
для запуска. Если у вас есть несколько версий Java, то есть у вас есть исполняемый файлjava
в нескольких местах, указанных в переменной PATH, то первый, который встречается при движении слева направо, будет выполняться.Команда компилятора
javac
и поставляется только с JDK. Команда runtime являетсяjava
и поставляется с JDK и находится в JRE.Вероятно, у вас установлена одна версия (51.0 = Java 7)
javac
, и у вас также есть ту же версиюjava
, но другая предыдущая версияjava
появляется раньше в PATH и поэтому вызывается вместо ожидаемого.
java.lang.UnsupportedClassVersionError
происходит из-за более высокого JDK во время компиляции и более низкого JDK во время выполнения.
/etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
) на версию, используемую для компиляции с помощью javac.
– ezdazuzena
6 August 2013 в 10:30
sudo update-alternatives --config java
для этого.
– Thorbjørn Ravn Andersen
29 January 2014 в 12:06
У меня была аналогичная ситуация на Mac, и для меня работал следующий процесс:
В терминале введите
vi ~/.profile
Затем добавьте эту строку в файл и save
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home
, где версия является той, что на вашем компьютере, например 1.7.0_25
.
Выйдите из редактора, затем введите следующую команду, чтобы она стала эффективной
source ~/.profile
Затем введите java -version, чтобы проверить результат
java -version
Что такое .profile
файл?
. Файл файла является скрытым файлом. Это необязательный файл, который сообщает системе, какие команды запускаться, когда пользователь, чей файл профиля находится в нем. Например, если мое имя пользователя - bruno, и в файле / Users / bruno / содержится все .profile-файл, все его содержимое будет выполняться во время процедуры входа в систему.
Сначала давайте рассмотрим некоторые основы ...
JRE является компонентом в NetBeans / Eclipse / standalone, который предоставит вам библиотеки, JVM, плагины Java и amp; Веб-начало Java. Обратите внимание, что он не предоставляет компиляторов или отладчиков.
JDK - это надмножество JRE наряду с compliers и debuggers.
Итак, когда у вас есть библиотека по умолчанию как JRE вместо JDK, у вас будет приятное время на импорт, но он не будет компилироваться.
Вместо этого укажите свой путь к JDK (я использую NetBeans, и я установил их с помощью netbeans.conf в netbeans / etc / netbeans.conf и измените путь).
Я решил. Я побежал:
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
Ошибка вводит в заблуждение, Unsupported major.minor version 51.0
. Это создает впечатление, что версия 51 (Java 7) не поддерживается. И мы должны использовать Java 6.
Ошибка должна быть:
Текущая версия Java, 50, не поддерживается. Вместо этого используйте Java версии 7 (51: 0 и выше). `
blockquote>
Ваш Java-файл скомпилирован с другой версией (более поздняя версия компилятора), чем версия (более низкая версия исполнения), которую вы пытаетесь запустить.
Понятно, что классы, скомпилированные с более низкими версиями как ожидается, будут работать в более поздних версиях. Но противоположное (скомпилированное с более высокой версией компилятора и пытающееся запустить его с более низкой версией времени исполнения) иногда невозможно.
Следовательно, вы показываете эту ошибку при попытке выполнить свою программу. Неподдерживаемая версия major.minor x.x
Q: Я создал приложение в Java 7, но когда мои пользователи пытаются его запустить, они получают ошибку Unsupported major.minor version 51.0. Что это значит и что я могу с этим поделать?
A: Если вы скомпилируете приложение с помощью javac в Java 7, то итоговые файлы классов будут иметь номер версии версии 51.0. Версии Java до 7 не распознают этот номер, поэтому вашим пользователям придется перейти на Java 7 до запуска вашего приложения. Если вы не используете Java 7 API, вы можете попытаться скомпилировать ваше приложение с помощью javac -target 1.6, чтобы создать 1.6-совместимый файл класса. Если ваше приложение развернуто с помощью webstart, вы можете указать минимальную требуемую версию. Для получения дополнительной информации см. Документы в Java Web Start и JNLP. Эта проблема исчезнет, как только мы запустим autoupdate для Java 7 для конечных пользователей, в настоящее время имеющих Java 6 на своих рабочих столах. Временная шкала для этого еще не определена, мы хотим дать разработчикам время для разработки любых проблем между их кодом и JDK 7. Сначала
(Источник: oracle.com [/ д0].)