При запуске любого 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-битной
Любые идеи?
rt.jar
файла, которая требуетсяJVM
во время загрузкиJRE
Ответы:
Эта проблема связана с неправильной установкой Java.
Возможность 1
В стандартной библиотеке Java содержится в различных JAR - файлы, такие как
rt.jar
,deploy.jar
,jsse.jar
и т.д. Когда JRE упаковывают эти критические JAR - файлы сжаты с Pack200 и хранятся какrt.pack
,deploy.pack
,jsse.pack
и т.д. Java установщик должен распаковать их. Если вы столкнулись с этой ошибкой, очевидно, этого не произошло.Вам нужно вручную запустить
unpack200
все.pack
файлы в JRElib/
иlib/ext/
папках.Windows
Распаковать один
.pack
файл (напримерrt.pack
), запустите:Рекурсивно распаковать все
.pack
файлы, запустите из корня JRE:* Никс
Чтобы распаковать один
.pack
файл (напримерrt.pack
), запустите:Чтобы рекурсивно распаковать все
.pack
файлы, запустите из корня JRE:Возможность 2
Вы деинсталлировали Java другим способом. Возможно, вы установили без прав администратора или пытались просто извлечь файлы из установщика. Попробуйте еще раз с установщиком и / или другими привилегиями. Или, если вы не хотите использовать установщик, используйте
.tar.gz
вместо этого пакет Java.источник
for %i in (*.pack) do (..\bin\unpack200 "%i" "%~ni.jar" & del "%i")
(Возможно, когда-нибудь я сделаю его немного более устойчивым, чтобы мне не пришлось вручную изменять путь, но, опять же, я обычно просто использую.gz
выпуск JRE, который их не упаковывает. )Для Java 8 в ОС * nix перейдите к
<jdk root>/jre/lib
(для меня/usr/java/jdk1.8.0_05/jre/lib
). Из этого каталога выполните:Чтобы предотвратить проблемы с версией в случае, если у вас установлена другая JRE, используйте ту же,
unpack200
которая поставляется вместе с JRE, которую вы исправляете, то есть из командной строки используйте../../bin/unpack200
(не только для меня/usr/java/jdk1.8.0_05/bin/unpack200
), но и простоunpack200
.источник
"<jdk1.8_root>/lib"
../bin/unpack200 tools.pack tools.jar
in"<jdk1.8_root>/jre/lib/ext"
../../bin/unpack200 jfxrt.pack jfxrt.jar
../../bin/unpack200 localedata.pack localedata.jar
Похоже, что для 64-битной архитектуры необходимо установить как 32-битную, так и 64-битную версию jre (файлы, не зависящие от архитектуры, как rt.jar, распространяются только в 32-битной версии).
Не забудьте затем обратить внимание на включение корректного исполняемого файла Java в глобальную переменную среды PATH.
источник
architecture independent files as rt.jar are distributed only in the 32-bin version
?Быстрое решение для нетерпеливых людей;) На компьютерах с Windows попробуйте следующее: Перейдите в
C:\Windows\System32
каталог и удалитеjava.exe
(или переименуйте его в нечто вродеjava.exe.old
).Начиная
java.exe
с версии 1.6, в каталоге Windows не должно быть . Если есть, это пережиток чего-то.Чуть больше чтения:
Я действительно удивлен, что вопрос 2012 года не имеет утвержденного ответа, и я действительно столкнулся с той же проблемой в 2015 году на моей 32-битной ОС Win 7!
Так что же случилось?
В принципе, все работало нормально, я скачал базу данных H2 и при попытке запустить
H2 Console (Command Line)
получил:Я нашел этот вопрос, и я смог подтвердить те же симптомы:
JAVA_HOME установлен правильно:
java -version
не получается, покаjava --fullversion
работает нормальноРЕШЕНИЕ: перейти в
C:\Windows\System32
каталог и удалить (я на самом деле переименовал)java.exe
файл !!!!Теперь я получаю:
и
H2 Console (Command Line)
работает отлично!Кредиты перейти к последнему сообщению в этом форуме: https://bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/
источник
C:\ProgramData\Oracle\Java\javapath
были причиной проблемы. Я изменяю переменную среды PATH, и теперь она работает.Я скачал новый JDK сегодня (1.8.0.73)
c:> java.exe
и получил печально известную:Я просто хотел поделиться своим рабочим решением здесь.
Когда я записывал в
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 и проблема ушла. Удачного кодирования ...источник
Скорее всего, в вашей установке отсутствует файл rt.jar, в котором есть файл класса для java.lang.Object. Проверьте ваши установочные файлы и т. Д.
В частности, обратите внимание, что 64-разрядный intsaller накладывает (или устанавливает «рядом») существующую 32-разрядную установку. Другими словами, чтобы получить полностью работающую 64-битную установку, вы должны сначала запустить 32-битную установку, а затем выполнить 64-битную установку, если у вас есть 64-битная машина ...
Если вместо этого вы выполните только 64-битную установку, то при установке вы пропустите определенные файлы и получите ошибки, подобные приведенной выше.
источник
В Windows 10 я столкнулся с той же проблемой с JRE 1.8 (8u121).
Typing
приглашение cmd возвращает
Все остальные команды,
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
файл; если это правда, удалите этот файл.Печатая сейчас,
java -version
он работает отлично.источник
C:\Program Files\Java Folder\bin
. Вместо этого я использую,C:\Program Files\Java\jdk1.8.0_161\bin
но это не помогает мне в любом случае. Нет файла java.exe в папке System32Эта проблема возникает, когда вы устанавливаете JDK
_uncompressing_
вместо_executing_
него.Примером:
В первом сценарии библиотеки времени выполнения, такие как rt.jar, не получают автоматическую оценку (таким образом, вы можете найти файлы rt.pack и т. Д. Вместо файлов .jar).
источник
У меня недавно была такая же проблема. В моем случае мой компьютер с Windows 7 автоматически загрузил java и добавил
C:\ProgramData\Oracle\Java\javapath
в начало моей переменной окружения path, что испортило мой java. Как только я избавился от этого с пути, это сработало.источник
если вы выполните «chmod u + rx» в двоичном файле java и запустите его, он распакует файлы jar, и вы можете сделать java-версию без ошибок времени выполнения
источник
Вы не можете установить только 64-разрядную версию, сначала необходимо установить 32-разрядную версию, а затем добавить 64-разрядные компоненты.
С java.com:
источник
Если вы устанавливаете 64-разрядную версию без предварительной установки 32-разрядной, эта ошибка будет возникать, несмотря на устранение всех других проблем. У меня есть новая Dell i7 64-битная машина Windows 10 Pro под управлением Java 8u71. После добавления моих% path% и% classpath% в переменные окружения и пробования нескольких других исправлений, удаления 64-разрядных, установки 32-разрядных и последующей переустановки 64-разрядных исправили это.
Некоторые проблемы, такие как отсутствие распаковки ваших файлов и т. Д., Которые были упомянуты в качестве возможных причин, могут по-прежнему вызывать проблемы, но если вы этого не сделаете, другие исправления не будут работать.
источник
В моем случае я использую Windows 8.1 (установлен jdk1.8.0_77), я сделал три вещи:
и вуаля исправила!
источник
Я столкнулся с подобной проблемой и обнаружил, что символическая ссылка в данных программы (C: \ ProgramData \ Oracle \ Java \ javapath) была неправильной. Я дал правильный путь, и это сработало.
Подробная информация о том, как исправить данные программы, доступна здесь.
источник
Другим ответом может быть использование файла tar.gz вместо этого в случае Linux. Кажется, что-то подобное есть и для платформы Solaris. Таким образом, все файлы уже будут в ожидаемом формате, и не будет никаких проблем с распаковкой.
источник
У меня есть некоторые проблемы на установках Linux x86_64 с JDK 1.7.0_40 i586. Я выяснил, что проблема в том, что rpm не может распаковывать jar-файлы, как упоминалось в Rigg802 (хотя rpm успешно завершает разметку):
Файл /lib/ld-linux.so.2 предоставляется glibc-2.12-1.107.el6_4.4. i686 который не входит в число оборотов в минуту JDK об / мин.
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.
источник
Быстрое исправление, которое сработало для меня:
источник
Я обнаружил, что эта ошибка произошла, когда я извлек файл .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 (закройте затмение, если оно открыто), затем переустановите Java и откройте затмение, очистите проекты.
источник
Просто сделал это на Solaris и столкнулся с такой же проблемой, где даже "Java-версия" не работает. Существует причина, по которой 64-битные версии дистрибутива НАМНОГО меньше 32-битных. Это действительно так, как указано выше:
Другими словами, чтобы получить полностью работающую 64-битную установку, вы должны сначала запустить 32-битную установку, а затем выполнить 64-битную установку, если у вас есть 64-битная машина ...
Итак, я запустил установщик для 32-разрядной версии:
Затем я запустил установщик для 64-битной:
Это дает мне несколько исполняемых файлов Java на выбор:
Sparcv9 Java - это 64-битные версии, и они работают с «-version» при установке вместе с 32-битным JDK.
Дан
источник
/usr/java
так что это явно ОС Linux / Unix. Вы правы в том, что установка Java в Solaris отличалась от любой другой ОС вплоть до Java8. Вы должны были установить сначала 32-битный пакет, а затем 64-битный пакет поверх него. Но это все в прошлом, когда 32-битная Java больше не поддерживается в Solaris, подобно Mac OS X.В окне 10 уже есть путь, представленный в env как
C:\>ProgramData\Oracle\Java\javapath
содержит символические ссылки на исполняемые файлы.Когда я устанавливаю новую версию и удаляю ее из переменной среды, мой проект начинает показывать ее.
Я использую затмение кислорода в окне 10
Чтобы решить это: -
Я просто удаляю путь
C:\>ProgramData\Oracle\Java\javapath
из переменной среды и добавляю новые env как JAVA_HOME и% JAVA_HOME% / bin в pathЯ переустановить JDK с правами администратора (удалить предыдущую папку JRE)
Моя проблема решена :) Надеюсь, это поможет вам :)
источник
Это устранило проблему, с которой я столкнулся в CentOS
также смотрите настройку JAVA_HOME & CLASSPATH в CentOS 6
источник
Итак, я продолжал пробовать все, и, наконец, кажется, что переустановка Java после удаления исправила мою проблему.
источник
если какие-либо проблемы для версии установки JAVA
C: \ Где JAVA
даст местоположение java, которое он собирает. Если у вас есть какой-либо путь, отличный от вашей установки, удалите эти файлы или переименуйте его (может быть как _backup). вы получите правильную версию файла Java.
источник
Я столкнулся с той же проблемой, я установил две версии Java, следовательно, это вызвало эту проблему. чтобы подтвердить это, перейдите и нажмите значок Java на панели управления, если не открывается, то проблема та же, просто перейдите и удалите одну версию. Кусок пирога. Спасибо.
источник
Я столкнулся с той же проблемой: ошибка произошла во время инициализации виртуальной машины 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.
Оно работает.
источник