JRE 1.7 – версия java – возвращает: java / lang / NoClassDefFoundError: java / lang / Object

При запуске любого java-приложения или просто «java» jvm не выполняется:

Ошибка при инициализации виртуальной машины
java / lang / NoClassDefFoundError: java / lang / Object

Вот список неправильных ответов:

  1. Правильный домашний каталог Java, включая каталог / bin, находится на глобальном PATH

  2. JAVA_HOME установлен правильно

  3. Выполнение команды java -fullversion работает

    $ java -fullversion ./java full version "1.7.0_05-b05" 
  4. Символьные ссылки в / usr / java указывают на правильную установку java

  5. Я не устанавливал Java по умолчанию, когда я создал систему

  6. Ошибка java -versionjava -version же ошибка, как указано выше

  7. Выдача команд из-под структуры каталогов java-установки не работает ни

  8. Это 64-битная Java для 64-битного

Есть идеи?

Проблема возникает из-за неправильной установки 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 файлы, используя *.pack команду:

  • Для 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 и перезапустите свою программу.

Для java 8 @ * NIX OS:

Из каталога "/jre/lib" (для меня это: /usr/java/jdk1.8.0_05/jre/lib)

Бег:

  ../../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)

Benedek

Кажется, что для 64-битной архитектуры вам необходимо установить 32-разрядную версию и 64-разрядную версию jre (независимые от архитектуры файлы, такие как rt.jar, распространяются только в 32-разрядной версии).

Помните, что обратите внимание, чтобы включить корректный исполняемый файл java в глобальную переменную среды PATH.

Быстрое решение для нетерпеливых людей;) На машинах 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/

Скорее всего, вам не хватает файла с именем rt.jar в вашей установке, который имеет файл classа для java.lang.Object. Проверьте файлы установки и т. Д.

В частности, обратите внимание, что 64-разрядные intsaller накладывают (или устанавливают «рядом с») существующую 32-битную установку. Другими словами, чтобы получить полностью работоспособную 64-битную установку, вы должны сначала запустить 32-разрядную установку и следовать этому с помощью 64-разрядной установки, если у вас есть 64-битная машина …

Если вместо этого вы выполняете только 64-битную установку, вы будете пропускать определенные файлы в процессе установки и получите ошибки, такие как выше.

Я загрузил новый 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 которая содержит символические C:\>ProgramData\Oracle\Java\javapath на исполняемые файлы.

java.exe указывал на jre\bin . Файл был поврежден, когда я начал \jre\bin\java.exe – точно такую ​​же ошибку. Бинго. Я снова установил JRE, и проблема исчезла. Счастливое кодирование …

Эта проблема возникает, когда вы устанавливаете JDK с помощью _uncompressing_ а не _executing_ it.

Например:

 unzip jdk-6u45-linux-x64.bin (wrong) sh ./jdk-6u45-linux-x64.bin (right) 

В первом сценарии библиотеки времени выполнения, такие как rt.jar, не получают автоматически uncompresessed (таким образом, вы можете найти файлы rt.pack и т. Д. Вместо .jar).

У меня была такая же проблема в последнее время. В моем случае мой компьютер Windows 7 автоматически загрузил java и добавил C:\ProgramData\Oracle\Java\javapath в начало моей переменной окружения, что испортило мой java. Как только я избавился от этого с пути, он сработал.

В Windows 10 я столкнулся с той же проблемой с JRE 1.8 (8u121).
Typing

 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:\Windows\System32 файл java.exe ; если true, удалите этот файл.

Ввод в настоящее время java -version работает отлично.

если вы делаете «chmod u + rx» в двоичном формате java и запускаете его, он распакует файлы jar, и вы можете сделать java -версию без ошибок времени выполнения

Вы не можете установить только 64-битный, вы должны сначала установить 32-битный, а затем добавить 64-битные компоненты.

От java.com:

Установка JRE на 64-битной системе, которая позволяет 32-разрядную JVM, является двухэтапным процессом: сначала установите 32-разрядную JRE, а затем установите дополнительную поддержку для 64-разрядных операций. Имена файлов следующие:

Если вы установите 64-разрядную версию без предварительной установки 32-разрядной версии, эта ошибка произойдет, несмотря на устранение всех других проблем. У меня есть новый 64-разрядный 64-разрядный Windows 7 Pro с операционной системой Java 8u71. Добавив свои% path% и% classpath% к переменным окружения и попробовав несколько других исправлений, удалите 64-разрядную версию, установив 32-битную, а затем переустановив 64-битную исправленную.

Некоторые проблемы, такие как отсутствие распаковки файлов и т. Д., Которые упоминаются как возможные причины, могут по-прежнему вызывать проблемы, но если вы этого не сделаете, другие исправления не будут работать.

В моем случае я использую Windows 8.1 (установленный jdk1.8.0_77), я сделал три вещи:

  1. Я удалил предыдущие jdks
  2. Я переименовал файл java.exe внутри C: \ Windows \ System32
  3. Я также удалил C: \ ProgramData \ Oracle \ Java \ javapath в своем PATH (echo% PATH%)

и вуаля исправилась!

Я столкнулся с подобной проблемой и обнаружил, что символическая ссылка в данных программы (C: \ ProgramData \ Oracle \ Java \ javapath) была неправильной. Я дал правильный путь, и это сработало.

Информация о том, как исправить данные программы, доступна здесь

Другим ответом может быть использование файла tar.gz вместо этого в случае Linux. Кажется, что-то подобное и для платформы Solaris. Таким образом, все файлы уже будут в ожидаемом формате, и проблем с распаковкой не будет.

У меня возникла проблема с установками Linux x86_64 с 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.

Быстрое исправление, которое сработало для меня:

 for file in $(find "$JAVA_HOME" -name "*pack") do unpack200 "${file}" "${test_file/%pack/jar}"; done 

Я обнаружил, что эта ошибка возникла, когда я извлек файл .rpm.

Затем я удалил эту папку и загрузил jdk-7u79-linux-x64.tar.gz для Linux 64 и вместо этого извлек содержимое этого файла. Также: экспорт JAVA_HOME = / opt / java / jdk1.7.0_79 export JDK_HOME = / opt / java / jdk1.7.0_79 export PATH = $ {JAVA_HOME} / bin

Просто установите jre снова . Это просто решило мою проблему. (Начальная партия SonarQube начала давать эту ошибку после установки jdk)

Перейдите на панель управления, удалите связанные с Java материалы (закройте eclipse, если они открыты), затем заново установите java и закройте eclipse, очистите проекты.

Просто сделал это на 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/db/demo/programs/scores/java
  • ./jdk1.6.0_131/db/demo/programs/vtis/java
  • ./jdk1.6.0_131/bin/java
  • ./jdk1.6.0_131/bin/sparcv9/java
  • ./jdk1.6.0_131/jre/bin/java
  • ./jdk1.6.0_131/jre/bin/sparcv9/java

Java’s sparcv9 – это 64-битные версии, и они работают с «-версией» при установке рядом с 32-битным JDK.

  • ./jdk1.6.0_131/bin/sparcv9/java -version
  • java-версия “1.6.0_131”
  • Java (TM) SE Runtime Environment (assembly 1.6.0_131-b32)
  • Java HotSpot (TM) 64-разрядная серверная VM (assembly 20.131-b32, смешанный режим)

Дан

В окне 10 уже существует путь, присутствующий в env как C:\>ProgramData\Oracle\Java\javapath который содержит символические C:\>ProgramData\Oracle\Java\javapath на исполняемые файлы.

Когда я устанавливаю новую версию и удаляю ее из моей переменной окружения, мой проект начинает ее показывать.

Я использую кислород затмения в окне 10

Чтобы решить эту проблему: –

  1. Я просто C:\>ProgramData\Oracle\Java\javapath путь C:\>ProgramData\Oracle\Java\javapath из переменной окружения и добавил новый env как JAVA_HOME и% JAVA_HOME% / bin в пути

  2. Я переустанавливаю jdk с правами администратора (удаляю предыдущую папку JRE)

  3. Откройте проект eclipse> щелкните правой кнопкой мыши> Перейти к свойствам> В библиотеках> Теперь удалите библиотечную библиотеку JRE> Нажмите «Добавить библиотеку»> выберите «Системная библиотека JRE»> Нажмите «Далее»> выберите «Рабочее пространство по умолчанию JRE (jre1.8.x_xxx)»> Конец

Моя проблема решена 🙂 Надеюсь, это поможет вам 🙂

Это фиксировало проблему, которую я имел на CentOS

 sudo yum install java-1.8.0-openjdk-devel 

также см. настройку JAVA_HOME & CLASSPATH в CentOS 6

Итак, я продолжал пробовать все и, наконец, кажется, что переустановка java после удаления исправила мою проблему.

В windowsх это работает для меня

 C:\jdk-8u162-windows-x64\jre\lib>..\..\bin\unpack200 -r -v rt.pack rt.jar 

Я столкнулся с такой же проблемой: произошла ошибка во время инициализации VM 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.

Оно работает.

Я столкнулся с такой же проблемой, я установил две версии java, и это вызвало эту проблему. для подтверждения этого перехода и нажмите значок java на панели управления, если он не открывается, тогда проблема будет такой же, просто перейдите и удалите одну версию. Кусок пирога. Благодарю.

  • Android FTP Library
  • Какую технику хранения данных Android использовать?
  • ArrayList не обновляется внутри функции onChildAdded
  • При создании службы нет пустого конструктора
  • getHeight возвращает 0 для всех объектов Android UI
  • XMPP с библиотекой Java Asmack, поддерживающей X-FACEBOOK-PLATFORM
  • Как использовать перехватчик для добавления заголовков в «Дооснащение 2.0»
  • Ошибка конструктора списка Firebase
  • Предпочтения в списке Android: есть сводка в качестве выбранного значения?
  • Печать целого числа в двоичном формате в Java
  • Java: Как установить точность для двойного значения?
  • Давайте будем гением компьютера.