- How To Fix Java.Lang.NoClassDefFoundError: Javax/xml/bind/annotation/xmlschema When Install Android SDK
- 1. Downgrade JDK Version To Fix Exception in thread “main” java.lang.NoClassDefFoundError:javax/xml/bind/annotation/XmlSchema Error.
- 2. Edit JAVA_OPTS Environment Variable Value To Fix Exception in thread “main” java.lang.NoClassDefFoundError:javax/xml/bind/annotation/XmlSchema Error.
- Exception in thread «main» java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema #862
- Comments
- wyattbiker commented Mar 17, 2019 •
- Versions
- Description
- buildozer.spec
- Не удалось установить android-sdk: «java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema»
- 24 ответа
- 1. Выяснение, где моя java:
- 2. Проверка файлов java:
- 3. Проверка того, что используется по умолчанию, а что по умолчанию — время выполнения
- 4. Смена версии по умолчанию
- Не удалось установить android-sdk: «java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema»
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Ответ 15
- Ответ 16
How To Fix Java.Lang.NoClassDefFoundError: Javax/xml/bind/annotation/xmlschema When Install Android SDK
When I install android SDK use android SDK manager, it throws an error exception in thread “main” java.lang.noclassdeffounderror: javax/xml/bind/annotation/xmlschema . It cost me a lot of time to investigate. Now I will tell you how to fix it in detail.
1. Downgrade JDK Version To Fix Exception in thread “main” java.lang.NoClassDefFoundError:javax/xml/bind/annotation/XmlSchema Error.
The reason for this error is because the JDK version that is used is too new. So first you need to find out which Java version are you using.
- Open a terminal and run the command $ java -version like below.
- My java version is 12.0.1, this java version will cause this error, so I need to install another java version such as java 8 and then set java 8 as my default java JDK. You can read the article How To Install / Uninstall Multiple Java Versions In Mac OS By Home Brew Or Manually to learn more.
- When you install java 8 successfully, run the command ./sdkmanager in terminal again, then the error will disappear.
2. Edit JAVA_OPTS Environment Variable Value To Fix Exception in thread “main” java.lang.NoClassDefFoundError:javax/xml/bind/annotation/XmlSchema Error.
If you do not want to downgrade your JDK version, you can edit the environment variable JAVA_OPTS value like below to fix this error.
- For Windows, you can run the below command in a command console to set the system environment variable JAVA_OPTS. Please read the article How To Set Windows Environment Variables.
- For Linux or macOS, edit file .bash_rc or .zshrc ( Linux ), .bash_profile ( macOS ), add below code to export the system environment variable JAVA_OPTS.
Источник
Exception in thread «main» java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema #862
Comments
wyattbiker commented Mar 17, 2019 •
Versions
- Python: 3.7
- OS: Linuxmint 19.1
- Buildozer: 0.40.dev0
- [INFO ] [Logger ] Record log in /home/standing/.kivy/logs/kivy_19-03-16_4.txt
- [INFO ] [Kivy ] v1.10.1
- [INFO ] [Python ] v3.7.2 (default, Mar 13 2019, 12:16:1
Description
Followed instructions here for Android on Ubuntu 18.04 (64bit). Replaced python2.7 and the dev with 3.7 on the build-essentials.
sudo apt install build-essential ccache git libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 python3.7 python3.7-dev openjdk-8-jdk unzip zlib1g-dev zlib1g:i386
I am executing inside a virtualenv
I am also on latest version of kivy and the simple application runs fine under Linux.
I get this error.
Exception in thread «main» java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
. 5 more
buildozer.spec
The text was updated successfully, but these errors were encountered:
Источник
Не удалось установить android-sdk: «java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema»
При установке инструментов Android SDK появляется следующая ошибка:
java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema
Почему это происходит и как это можно исправить?
24 ответа
У меня была похожая проблема этим утром (пытался собрать для Android с помощью Unity3D). В итоге я удалил JDK9 и установил Java SE Development Kit 8u144 . Надеюсь это поможет.
- brew cask uninstall java # удалить java9
- brew tap homebrew/cask-versions
- brew cask install java8 # установить java8
- touch
/.android/repositories.cfg # без этого файла ошибка произойдет на следующем шаге
Для меня я устанавливаю версию Java 8 и просто выбираю версию Java в разделе «Расположение JDK»:
В моем случае мне нужны JDK 8 (пытаюсь использовать менеджер AVD и SDK в Qt под Ubuntu) и 11 для разных инструментов. Удаление версии 11 не вариант.
Решения ‘JAVA_OPTS’ ничего не сделали. Мне не очень нравится экспорт JAVA_HOME, так как он может заставить вас запустить любой инструмент, вызывающий эти утилиты из той же оболочки (например, Qt), или заставить сделать его постоянным, что не удобно.
Так что для меня решение довольно простое. Добавьте что-то вроде этого во второй строке
/ Android / tools / bin / sdkmanager и
/ Android / tools / bin / avdmanager:
(или какой-либо путь к вашей версии 8 JDK).
При этом эти инструменты командной строки работают в автономном режиме, они также работают при вызове другими инструментами, такими как Qt, а jdk 11 по-прежнему является системной настройкой по умолчанию для других. Нет необходимости смешивать библиотеки и т.д.
Единственным недостатком является то, что любое обновление этих инструментов командной строки удалит эти изменения, которые вы должны будете вернуть обратно.
Я столкнулся с той же проблемой при запуске:
Я решил это как
Измените Java, чтобы использовать 1.8
Тогда та же команда работает нормально
Я столкнулся с той же проблемой. Хотя я немного отсталый разработчик (все еще использую windows для разработки: P)
Чтобы решить эту проблему в Windows :
ШАГ 1: Установите jdk 8, если он не был установлен (jdk 9 или 11 не работает, но вы можете установить их для использования в других целях).
Очень просто, используя Chocolatey:
(если установлен с использованием Chocolatey, пропустите шаги 2 и 3)
ШАГ 2. Перейдите в настройки переменных среды и установите JAVA_HOME в каталог установки jdk 8.
ШАГ 3: Перейдите к переменной path, добавьте каталог bin в jdk 8 и переместите его в начало.
ШАГ 4: Закройте все открытые сеансы терминала и перезапустите новый сеанс
ДОПОЛНИТЕЛЬНЫЙ ШАГ 5: В зависимости от вашей цели при запуске терминала (может потребоваться добавить sdkmanager в путь или просто перейти в каталог):
Это все! : O Насладись трепетом! : D
Поскольку Java 11 удалила JavaEE, вам нужно скачать несколько jar-файлов и добавить в путь к классам:
Затем отредактируйте файл sdkmanager.bat, чтобы set CLASSPATH = . заканчивался на ;% CLASSPATH%
Установите CLASSPATH, чтобы включить JAXB и JAF:
Тогда sdkmanager.bat будет работать.
В моем случае у меня 14 версия, а мне нужна 8.
Прежде чем выполнять следующие шаги, установите java8 (или желаемую версию) с помощью диспетчера пакетов.
1. Выяснение, где моя java:
2. Проверка файлов java:
Я вижу, что все файлы java — это ссылки на /usr/lib/jvm/default[something] . Это означает, что команда java связана с исполняемым файлом определенной версии java .
3. Проверка того, что используется по умолчанию, а что по умолчанию — время выполнения
Здесь я мог видеть, что версия по умолчанию — 14 (уникальная установленная версия).
4. Смена версии по умолчанию
Сначала удалите существующие ссылки на 14 версию.
После этого создайте новые ссылки на нужную версию (здесь 8).
Стратегия состоит в том, чтобы сделать ссылку из желаемой версии программного обеспечения (в случае java) на некоторый именованный файл ссылки по умолчанию ( ln -s выше). Затем эта ссылка по умолчанию связывается с именем команды внутри каталога bin по умолчанию ( также в переменной среды $PATH ! )
В Mac / Linux используйте следующую команду:
Работает для JDK 9 и 10, без исправления любого скрипта (sdkmanager, avdmanager).
Если вы не хотите менять свою версию Java (я не хочу), вы можете временно изменить версию в вашей оболочке:
Затем выберите основную версию, если она установлена, иначе сначала установите ее:
Теперь вы можете запустить sdkmanager.
Чтобы устранить эту ошибку, вы можете понизить версию Java.
Или экспортирует следующую опцию на вашем терминале:
А чтобы сохранить его навсегда, вы можете экспортировать JAVA_OPTS в файле своего профиля в linux ( .zshrc , .bashrc и т. Д.) Или добавить в качестве переменной среды навсегда в Windows.
ps. Это не работает для Java 11+, в которой нет модулей Java EE. Для этого варианта рекомендуется отказаться от версии Java или подождать обновления Flutter.
Вам необходимо добавить следующее в свой профиль (работает на MacOS):
Не нужно ничего исправлять.
Странно Java9 не совместим с Android-SDK
Объедините все команды в одну для удобства:
Запустите команды java -version и javac -version в командной строке, чтобы убедиться, что они исходят из одного и того же JDK (например, версия 1.8.0_181).
Если нет, вам нужно изменить переменную PATH так, чтобы она указывала только на один JDK. Если вы не уверены, как это сделать, просто удалите все другие экземпляры Java, кроме Java 8 (Установка и удаление программ в Windows). На сегодняшний день Unity и Android рекомендует использовать JDK 8.
В Java 8 нет необходимости экспортировать модуль java.se.ee , как показано в некоторых других ответах. Вы также можете удалить любые JAVA_OPTS или другие переменные среды что вы установили.
Недавно я решил эту проблему, удалив более раннюю версию JDK и установив JDK 8. После установки JDK вам нужно указать путь. Затем вам нужно открыть командную строку в «C: \ Users \ Milan Adhikari \ AppData \ Local \ Android \ Sdk \ tools» и запустить «sdkmanager —update», который обновит ваш sdk, а затем вам нужно запустить «flutter doctor — -android-licenses «в cmd и принять все лицензии.
Теперь ваша проблема должна быть решена.
Я нашел два ответа, которые мне помогли, без необходимости удалять JDK 10 (или 9), который мне нужен для create-react-app . JDK 9 и 10 несовместимы с Android-SDK!
Сиу Чинг Понг -Асука Кэндзи- предлагает изменить скрипт sdkmanager , заменив эту строку:
Обратите внимание, что этот мод будет перезаписан при обновлении sdkmanager.
Проверьте его сообщение, и тот, на который он ссылается, для более подробной информации.
Это решение также было одним из решений, упомянутых в этом обсуждении проблем с github.
Источник
Не удалось установить android-sdk: «java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema»
При установке средств Android sdk испускается следующее сообщение об ошибке:
Почему это происходит и как оно может быть исправлено?
ОТВЕТЫ
Ответ 1
У меня была аналогичная проблема сегодня утром (попытка создать для Android с помощью Unity3D). В результате я удалил JDK9 и установил Java SE Development Kit 8u144. Надеюсь, это поможет.
- brew cask uninstall java # удалить java9
- brew tap caskroom/versions
- brew cask install java8 # установить java8
- touch
/.android/repositories.cfg # без этого файла, ошибка будет происходить на следующем шаге
Ответ 2
Это устранило проблему для Windows для меня.
Ответ 3
Чтобы устранить эту ошибку, вы можете понизить версию Java.
Или экспортирует следующую опцию на вашем терминале:
Linux/MAC:
Windows:
И чтобы сохранить его навсегда, вы можете экспортировать JAVA_OPTS в файл своего профиля в Linux ( .zshrc , .bashrc и т.д.) Или добавить в качестве среды навсегда в Windows.
пс. Это не работает для Java 11+, в которой нет модулей Java EE. Для этой опции хорошая идея, понизьте версию Java или дождитесь обновления Flutter.
Ответ 4
В Mac/Linux:
export JAVA_OPTS=’-XX:+IgnoreUnrecognizedVMOptions —add-modules java.se.ee’
Работает как для JDK 9, так и 10, без исправления какого-либо скрипта (sdkmanager, avdmanager)
Ответ 5
Я нашел два ответа, которые работали для меня, без необходимости удаления JDK 10 (или 9), которые мне нужны для create-react-app . Оба JDK 9 и 10 несовместимы с android-sdk!
Siu Ching Pong -Asuka Kenji- предлагает изменить скрипт sdkmanager , заменив эту строку:
Обратите внимание, что этот мод будет перезаписан при обновлении sdkmanager.
Проверьте его сообщение и тот, на который он ссылается, для получения более подробной информации.
Это решение было также одним из решений, упомянутых в этом потоке ответов github.
Немецкая почта указывает на источник конфликта и представляет исправления, которые не будут перезаписаны обновлениями.
Он предлагает переименовать /Library/Java/JavaVirtualMachines/Info.plist как средство скрытия его от скрипта, который ищет самую высокую версию Java, которая находится в вашей системе. Таким образом, JDK 8 возвращается по умолчанию.
Ссылаясь на JDK 10 явно или устанавливая его в $JAVA_HOME , вы можете использовать JDK 10, а не по умолчанию, когда это необходимо.
Подробности в его посте.
Ответ 6
Вам необходимо добавить в свой профиль (работает в MacOS) следующее:
Не нужно ничего исправлять.
Ответ 7
Странно Java9 не совместим с android-sdk
Объединение всех команд в один для удобства:
Ответ 8
Если вы не хотите менять свою версию Java (я этого не делаю). Вы можете временно изменить версию в своей оболочке:
затем выберите основную версию, если вы ее установили, иначе установите ее в первую очередь:
export JAVA_HOME=’/usr/libexec/java_home -V 1.8′
Теперь вы можете запустить sdkmanager
Ответ 9
Просто установите JDK версии 8 и выберите его по умолчанию, используя:
Ответ 10
Поскольку Java 11 удалила JavaEE, вам нужно скачать несколько jar файлов и добавить в путь к классам:
Затем отредактируйте sdkmanager.bat так, чтобы настройка CLASSPATH =. заканчивалась на ;% CLASSPATH%
Установите CLASSPATH, чтобы включить JAXB и JAF:
Тогда sdkmanager.bat будет работать.
Ответ 11
Для Windows-машины удалите JDK, если его более 1,8.172. Установить JDK 1.8.172
Я столкнулся с той же проблемой в Windows 10 с java 10. Я удалил java 10 и установил java8 для меня сейчас отлично. 🙂
Ответ 12
Запустите java -version и javac -version команды в командной строке, чтобы убедиться, что они происходят из одного JDK (например: версия 1.8.0_181)
Если нет, вы должны изменить PATH так, чтобы она указывала только на один JDK. Если вы не знаете, как это сделать, просто удалите все другие экземпляры Java, кроме Java 8 («Установка и удаление программ в Windows»). На сегодняшний день как Unity, так и Android рекомендуют использовать JDK 8.
В Java 8 нет необходимости экспортировать модуль java.se.ee как показано в некоторых других ответах. Вы также можете удалить любые JAVA_OPTS или другие переменные среды, которые вы установили.
Ответ 13
Для пользователей Linux (я использую Debian Distro, Kali) Вот как я решил мой.
Если у вас еще нет jdk-8, вы хотите получить его на сайте oracle
Я получил jdk-8u191-linux-x64.tar.gz
Шаг 1 — Установка Java Переместите и распакуйте его в подходящем месте
Вы должны получить распакованную папку, например, jdk1.8.0_191. Вы можете удалить архив после сохранения пространства
Шаг 2 — Настройка альтернатив по умолчанию для java-местоположения
Шаг 3 — Выбор ваших альтернатив по умолчанию
Шаг 4 — Подтверждение версии java по умолчанию
- В исходной статье здесь: https://forums.kali.org/showthread.php?41-Installing-Java-on-Kali-Linux также был установлен плагин по умолчанию для mozilla. Я предполагаю, что нам действительно не нужны плагины, поскольку мы просто пытаемся разработать для Android.
- Как и в ответе @spassvogel, вы также должны поместить файл @repositories.cfg в свой каталог
/.android, поскольку это необходимо для обновления списков репо инструментов
Ответ 14
Я столкнулся с той же проблемой при запуске:
Я решил это как
Измените Java на использование 1.8
Тогда та же команда работает нормально
Ответ 15
Понизьте вашу версию Java. Независимо от системы или ide.
Убедитесь, что версия Java не выше 8
В моем случае. Я изменяю ide java verion. Это решает мою проблему.
Ответ 16
Когда ваш Android Stuio/JRE использует другую версию Java, вы получите эту ошибку. чтобы решить эту проблему, просто установите Android studio/jre в JAVA_HOME. и удалите свою собственную Java.
Источник