JRE 1.7 возвращает: java/lang/NoClassDefFoundError: java/lang/Object
При запуске любого java-приложения или просто "java" сбой jvm:
Ошибка при инициализации виртуальной машины
java/lang/NoClassDefFoundError: java/lang/Object
Вот список неправильных ответов:
-
Верный домашний каталог Java, включая каталог /bin, находится в глобальной PATH
-
JAVA_HOME устанавливается правильно
-
Выполнение команды java -fullversion работает
$ java -fullversion
./java full version "1.7.0_05-b05"
-
Символьные ссылки в /usr/java указывают на правильную установку java
-
Я не устанавливал Java по умолчанию, когда создал систему
-
java -version
не работает... такая же ошибка, как указано выше
-
Выдача команд из-под структуры каталогов java-установки не работает.
-
Это 64-разрядная Java для 64-разрядного
Любые идеи?
Ответы
Ответ 1
Проблема возникает из-за неправильной установки Java (например, установка без прав администратора или просто распаковка tools.zip).
Вы можете удалить, затем переустановить Java с помощью установщика и/или более привилегий или попробовать следующее:
Проверьте папку JDK для файлов *.pack
в jre/lib
и jre/lib/ext
например rt.pack
(по умолчанию используется c:\nameof_jdk_folder\jre\lib
для Microsoft Windows и /usr/java/lib
для Unix/GNU Linux)
Те файлы *.pack
должны быть распакованы в файлы .jar
с помощью этой команды:
-
Для Windows:
%JAVA_HOME%\bin\unpack200 -r -v -l "" rt.pack rt.jar
-
Для * nix аналогичная командная строка распаковывает файлы:
cd /usr/java/lib
/usr/bin/unpack200 rt.pack rt.jar
и повторите этот шаг со всеми файлами *.pack и перезапустите свою программу.
Ответ 2
Для java 8 @* ОС NIX:
Из каталога "<jdk1.8_root>/jre/lib"
(для меня это:/usr/java/jdk1.8.0_05/jre/lib)
Run:
../../bin/unpack200 rt.pack rt.jar
../../bin/unpack200 jsse.pack jsse.rar
../../bin/unpack200 charsets.pack charsets.jar
(Возможно, вы не можете использовать систему unpack200, вызывая проблемы с версией.)
Этот файл unpack200 находится в каталоге java 8 (для меня:/usr/java/jdk1.8.0_05/bin)
Бенедек
Ответ 3
Кажется, что для 64-битной архитектуры вам необходимо установить 32-разрядную версию и 64-разрядную версию jre (независимые от архитектуры файлы, такие как rt.jar, распространяются только в 32-разрядной версии).
Помните, что обратите внимание на включение корректного исполняемого файла Java в глобальную переменную среды PATH.
Ответ 4
Быстрое решение для нетерпеливых людей;) На машинах Windows попробуйте следующее:
Перейдите в каталог C:\Windows\System32
и удалите java.exe
(или переименуйте его на что-то вроде java.exe.old
).
Поскольку не менее 1,6, в каталоге Windows не должно быть java.exe
. Если есть, то это от чего-то осталось.
Немного больше:
Я действительно удивлен, что вопрос с 2012 года еще не получил одобренного ответа, и я действительно столкнулся с той же проблемой в 2015 году на своей 32-разрядной ОС Win 7!
Так что же произошло?
В принципе, все работает нормально, я загрузил базу данных H2, и когда я попытался запустить H2 Console (Command Line)
, я получил:
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
Я нашел этот вопрос, и я смог подтвердить те же симптомы:
JAVA_HOME устанавливается правильно:
echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_26
java -version
не работает, а java --fullversion
работает нормально:
java -fullversion
java full version "1.6.0_45-b06"
РЕШЕНИЕ:
Перейдите в каталог C:\Windows\System32
и удалите (я действительно переименовал) java.exe
файл!!!!
Теперь я получаю:
java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
и H2 Console (Command Line)
отлично работают!
Кредиты Перейти к последнему сообщению в этом форуме:
https://bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/
Ответ 5
Скорее всего, вам не хватает файла с именем rt.jar в вашей установке, который имеет файл класса для java.lang.Object. Проверьте файлы установки и т.д.
В частности, обратите внимание, что 64-разрядный intsaller накладывает (или устанавливает "рядом с" ) существующую 32-битную установку. Другими словами, чтобы получить полностью работоспособную 64-битную установку, вы должны сначала запустить 32-разрядную установку и следовать этому с помощью 64-разрядной установки, если у вас есть 64-битная машина...
Если вместо этого вы выполняете только 64-битную установку, вы будете пропускать определенные файлы в процессе установки и получите ошибки, такие как выше.
Ответ 6
Я загрузил новый JDK сегодня (1.8.0.73), запустил c:> java.exe
и получил печально известный:
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
Я просто хотел поделиться своим рабочим решением здесь.
Когда я подключился к папке jdk\bin
, Java будет работать нормально, поэтому я знал, что это был PATH
. Я установил PATH
только \jdk\bin
в CMD, чтобы доказать это, и он сработал.
Итак, одна из папок в PATH
должна была иметь java.exe
, которая вызывала конфликт, подумал я. Как оказалось, это C:\>ProgramData\Oracle\Java\javapath
содержало символические ссылки для исполняемых файлов.
java.exe
указывал на jre\bin
. Файл был поврежден, когда я начал \jre\bin\java.exe
- точно такую же ошибку. Бинго. Я снова установил JRE, и проблема исчезла. Счастливое кодирование...
Ответ 7
Эта проблема возникает, если вы устанавливаете JDK на _uncompressing_
вместо _executing_
.
Пример:
unzip jdk-6u45-linux-x64.bin (wrong)
sh ./jdk-6u45-linux-x64.bin (right)
В первом сценарии библиотеки времени выполнения, такие как rt.jar, не получают автоматически uncompresessed (таким образом, вы можете найти файлы rt.pack и т.д. вместо .jar).
Ответ 8
У меня была такая же проблема в последнее время. В моем случае моя машина Windows 7 автоматически загрузила java и добавила C:\ProgramData\Oracle\Java\javapath
в начало моей переменной окружения, которая испортила мою java. Как только я избавился от этого пути, он сработал.
Ответ 9
Вы не можете установить только 64-битный, вы должны сначала установить 32-битный, а затем добавить 64-битные компоненты.
От java.com:
Установка JRE на 64-битной системе, которая позволяет 32-разрядную JVM, представляет собой двухэтапный процесс: сначала установите 32-разрядную JRE, а затем установите дополнительную поддержку для 64-разрядных операций. Имена файлов следующие:
Ответ 10
если вы выполните "chmod u + rx" в двоичном формате java и запустите его, он распакует файлы jar, и вы сможете сделать java -version без ошибок времени выполнения.
Ответ 11
В Windows 10 я столкнулся с той же проблемой с JRE 1.8 (8u121).
Ввод
java -version
подсказка cmd возвращает
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
Все остальные команды echo %JAVA_HOME%
, echo %JRE_HOME%
, echo %PATH%
, java -fullversion
работали нормально.
Переход к переменным среды на панели администрирования системы, удалите из PATH ссылку C:\ProgramData\Oracle\Java\javapath
и обязательно установите в PATH ссылку на C:\Program Files\Java Folder\bin
.
После этого проверьте, существует ли в C:\System\Windows32
файл java.exe
; если true, удалите этот файл.
Ввод текста java -version
работает нормально.
Ответ 12
Если вы установите 64-разрядную версию без предварительной установки 32-разрядной версии, эта ошибка произойдет, несмотря на устранение всех других проблем. У меня есть новый 64-разрядный 64-разрядный Windows 7 Pro с операционной системой Java 8u71. Добавив мои% path% и% classpath% к переменным окружения и попробовав несколько других исправлений, удалите 64-разрядную версию, установив 32-битную, а затем переустановив 64-битную исправленную.
Некоторые проблемы, такие как отсутствие распаковки файлов и т.д., которые упоминаются как возможные причины, могут по-прежнему вызывать проблемы, но если вы этого не сделаете, другие исправления не будут работать.
Ответ 13
В моем случае я использую Windows 8.1 (установленный jdk1.8.0_77), я сделал три вещи:
- Я удалил предыдущие jdks
- Я переименовал файл java.exe внутри C:\Windows\System32
- Я также удалил C:\ProgramData\Oracle\Java\javapath в своем PATH (echo% PATH%)
и вуаля исправила это!
Ответ 14
Я столкнулся с подобной проблемой и обнаружил, что символическая ссылка в данных программы (C:\ProgramData\Oracle\Java\javapath) была неправильной. Я дал правильный путь, и он сработал.
Информация о том, как исправить данные программы, доступна здесь
Ответ 15
Другим ответом может быть использование файла tar.gz вместо этого в случае Linux. Кажется, что-то подобное и для платформы Solaris. Таким образом, все файлы уже будут в ожидаемом формате, и проблем с распаковкой не будет.
Ответ 16
У меня есть некоторая проблема при установке x86_64 Linux с JDK 1.7.0_40 i586.
Я понял, что проблема в том, что rpm не может распаковывать файлы jar, как упоминалось Rigg802 (хотя rpm завершает успех маркировки):
Unpacking JAR files...
rt.jar...
/var/tmp/rpm-tmp.zLzkkb: /usr/java/jdk1.7.0_40/bin/unpack200: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
Error: unpack could not create JAR file:
/usr/java/jdk1.7.0_40/jre/lib/rt.jar
Файл/lib/ld-linux.so.2 предоставляется с помощью glibc-2.12-1.107.el6_4.4. i686, который не относится к rpm-дискам jdk rpm.
Oracle JDK rpm также требует 32-разрядных версий libgcc-4.4.7-3.el6. i686 для установки
Итак, обходным решением является установка glibc-2.12-1.107.el6_4.4.i686 и libgcc-4.4.7-3.el6.i686.
Ответ 17
Быстрое исправление, которое сработало для меня:
for file in $(find "$JAVA_HOME" -name "*pack")
do
unpack200 "${file}" "${test_file/%pack/jar}";
done
Ответ 18
Я обнаружил, что эта ошибка возникла, когда я извлек файл .rpm.
Затем я удалил эту папку и загрузил jdk-7u79-linux-x64.tar.gz для Linux 64 и вместо этого извлек содержимое этого файла.
Также: экспорт JAVA_HOME =/opt/java/jdk1.7.0_79 экспорт JDK_HOME =/opt/java/jdk1.7.0_79 export PATH = ${JAVA_HOME}/bin
Ответ 19
Просто установите jre снова. Это просто решило мою проблему. (Начальная партия SonarQube начала давать эту ошибку после установки jdk)
Ответ 20
Перейдите на панель управления, удалите связанные с Java компоненты (закройте eclipse, если они открыты), затем переустановите java и закройте eclipse, очистите проекты.
Ответ 21
Просто сделал это на Solaris и столкнулся с этой идентичной проблемой, где даже "java -version" не работает. Существует причина того, что 64-разрядные версии дистрибутива WAY меньше 32-бит. Это действительно так, как указано выше:
Другими словами, чтобы получить полностью работоспособную 64-битную установку, вы должны сначала запустить 32-разрядную установку и следовать этому с помощью 64-разрядной установки, если у вас есть 64-битная машина...
Итак, я запустил установщик для 32-разрядного:
sh jdk-6u131-solaris-sparc.sh
Затем я запустил установщик для 64-битного:
sh jdk-6u131-solaris-sparcv9.sh
Это дает мне несколько исполняемых файлов java на выбор:
- $find. -name java
- ./jdk1.6.0_131/дб/демо/программы/оценки/Java
- ./jdk1.6.0_131/дб/демо/программы/vtis/Java
- ./jdk1.6.0_131/бен/Java
- ./jdk1.6.0_131/бен/sparcv9/Java
- ./jdk1.6.0_131/JRE/бен/Java
- ./jdk1.6.0_131/JRE/бен/sparcv9/Java
Sparcv9 java - это 64-битные версии, и они работают с "-версией" при установке рядом с 32-битным JDK.
- ./jdk1.6.0_131/bin/sparcv9/java -version
- версия java "1.6.0_131"
- Java (TM) SE Runtime Environment (сборка 1.6.0_131-b32)
- 64-разрядная серверная виртуальная машина Java HotSpot TM (сборка 20.131-b32, смешанный режим)
Дан
Ответ 22
В окне 10 уже существует путь, присутствующий в env как C:\>ProgramData\Oracle\Java\javapath
, который содержит символические ссылки на исполняемые файлы.
Когда я устанавливаю новую версию и удаляю ее из моей переменной окружения, мой проект начинает ее показывать.
Я использую кислород затмения в окне 10
Чтобы решить эту проблему: -
-
Я просто удаляю путь C:\>ProgramData\Oracle\Java\javapath
из переменной окружения и добавляю новый env как JAVA_HOME и% JAVA_HOME%/bin в пути
-
Я переустанавливаю jdk с правами администратора (удаляю предыдущую папку JRE)
- Откройте проект eclipse > щелкните правой кнопкой мыши > Перейти к свойствам > В библиотеках > Теперь удалите библиотечную библиотеку JRE > Нажмите "Добавить библиотеку" > выберите "Системная библиотека JRE" > Нажмите "Далее" > "Использовать по умолчанию JRE (jre1.8.x_xxx) )" > завершить
Моя проблема решена:)
Надеюсь, это вам поможет:)
Ответ 23
Это зафиксировало проблему, с которой я столкнулся с CentOS
sudo yum install java-1.8.0-openjdk-devel
также см. настройку JAVA_HOME и CLASSPATH в CentOS 6
Ответ 24
Итак, я продолжал пробовать все и, наконец, кажется, что переустановка java после удаления исправила мою проблему.
Ответ 25
Я столкнулся с такой же проблемой: произошла ошибка во время инициализации виртуальной машины
java/lang/NoClassDefFoundError: java/lang/Object
Для решения проблемы выполните следующие действия:
Шаг 1. Откройте C:\Program Files\и найдите папку Java.
Шаг 2. Удалите папку C:\Program Files\Java.
Шаг 3. Загрузите новый Jdk для своей версии 32 бит /64 бит из http://www.oracle.com/technetwork/java/javase/downloads/index.html
Шаг 4. Установите JDK
Шаг 5: Теперь установите JAVA_HOME в "C:\Program Files\Java\jdk1.8.0_91"
Шаг 6: Откройте командную строку и введите java -version.
Он работает.
Ответ 26
Я столкнулся с той же проблемой, я установил две версии java, и это вызвало эту проблему. для подтверждения этого перехода и нажмите значок java на панели управления, если он не открывается, тогда проблема будет такой же, просто перейдите и удалите одну версию. Кусок пирога. спасибо.