Installation von android-sdk fehlgeschlagen: "java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema"

165

Bei der Installation der Android SDK-Tools wird der folgende Fehler ausgegeben:

java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema

Warum passiert das und wie kann es behoben werden?

Debug-Ausgabe:

$ java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
$ brew cask install android-sdk
==> Caveats
We will install android-sdk-tools, platform-tools, and build-tools for you.
You can control android sdk packages via the sdkmanager command.
You may want to add to your profile:
  'export ANDROID_SDK_ROOT=/usr/local/share/android-sdk'

This operation may take up to 10 minutes depending on your internet connection.
Please, be patient.

==> Satisfying dependencies
==> Downloading https://dl.google.com/android/repository/sdk-tools-darwin-3859397.zip
Already downloaded: /Users/tomasnovella/Library/Caches/Homebrew/Cask/android-sdk--3859397,26.0.1.zip
==> Verifying checksum for Cask android-sdk
==> Installing Cask android-sdk
==> Exception in thread "main"
==> java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
==>     at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
==>     at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
==>     at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
==>     at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:117)
==>     at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93)
==> Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
==>     at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
==>     at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
==>     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
==>     ... 5 more
Error: Command failed to execute!

==> Failed command:
/usr/local/Caskroom/android-sdk/3859397,26.0.1/tools/bin/sdkmanager tools platform-tools build-tools;26.0.1

==> Standard Output of failed command:


==> Standard Error of failed command:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
    at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
    at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
    at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
    at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:117)
Novellizator
quelle
Ich gehe davon aus, dass Ihre Frage lautet: "Was verursacht diesen Fehler?" Die Antwort ist, dass die Klassen javax.xml nicht gefunden werden können.
Steve Smith
28
Tatsächlich stellt diese Frage ein legitimes Problem bei der Installation des Android SDK, wenn Java9
Jontro
17
Ich habe dieses Problem und habe die erste Zeile meiner Fehlermeldung in Google kopiert / eingefügt. Diese Frage war der erste Treffer, der auftauchte. Nicht nur das, eine der folgenden Antworten hat es gelöst. Dies sollte nicht vollständig geschlossen werden: Unabhängig von den Regeln der Fragen erfüllt diese Frage nachweislich den gesamten Zweck der Website.
Le Mot Juiced
1
Löschen Sie alles, was älter als Java 8 ist, aus/Library/Java/JavaVirtualMachines
Dimitris
2
Das Problem tritt bei Java 8 und Java 11 unter Ubuntu 18.04 mit Paketen openjdk-8-jdkund auf openjdk-11-jdk. Weiß jemand, wofür im NDK zu installieren javax/xml/bind/annotation/XmlSchemaoder zu vermeiden ist javax/xml/bind/annotation/XmlSchema?
JWW

Antworten:

137

Ich hatte heute Morgen ein ähnliches Problem (ich habe versucht, mit Unity3D für Android zu bauen). Am Ende habe ich JDK9 deinstalliert und Java SE Development Kit 8u144 installiert . Hoffe das hilft.

  1. brew cask uninstall java # Java9 deinstallieren
  2. brew tap homebrew/cask-versions
  3. brew cask install java8 # Java8 installieren
  4. touch ~/.android/repositories.cfg # Ohne diese Datei tritt beim nächsten Schritt ein Fehler auf
  5. brew cask install android-sdk
Spassvogel
quelle
2
Habe den Fehler unter Windows 10, habe dies versucht, funktioniert immer noch nicht. Irgendwelche Tipps?
Vedvart1
3
Großartig - das hat bei der Erstellung einer Flutter-App in Android Studio funktioniert. Vielen Dank!
Darragh Enright
20
Dies funktioniert nicht mehr. Die Installation des Brühfasses in Java8 funktioniert nicht.
Kdy
4
Der richtige Befehl scheint jetzt zu seinbrew cask install homebrew/cask-versions/java8
Caesarsol
20
brew cask install homebrew/cask-versions/adoptopenjdk8scheint zu funktionieren
Guruz
81

Um diesen Fehler zu beheben, können Sie Ihre Java-Version herunterstufen.

Oder exportiert die folgende Option auf Ihr Terminal:

Linux / MAC:

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Windows :

set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Und es permanent speichern können Sie Exporte die JAVA_OPTSin Ihrer Profil - Datei auf Linux ( .zshrc, .bashrcusw.) oder als Umgebungsvariable hinzufügen permanent unter Windows.


ps. Dies funktioniert nicht für Java 11+, das keine Java EE-Module enthält. Für diese Option empfiehlt es sich, ein Downgrade Ihrer Java-Version durchzuführen oder auf ein Flutter- Update zu warten .

Ref: JDK 11: Ende der Straße für Java EE-Module

valdeci
quelle
6
Dies funktionierte für mich in Ubuntu 18.04 mit OpenJDK 10.0.2
Rastating
3
Arbeitete für mich unter macOS Mojave (10.14.2) mit der Java-Version "10.0.1" 2018-04-17.
Subfuzion
4
Erstellt einen neuen Fehler für mich unter macOS Mojave (10.14.2): Fehler beim Initialisieren der Boot-Ebene java.lang.module.FindException: Modul java.se.ee nicht gefunden
Randy
2
Ich habe auch 1.8.0_191 ausprobiert, erhalte aber immer noch: Fehler: Hauptklasse java.se.ee
Randy
1
Diese Option wird für Java 8 nicht benötigt und funktioniert nicht für Java 11, das keine Java EE-Module enthält.
Valdeci
63
set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee

Dies hat das Problem unter Windows für mich behoben.

Quelle 1 , Quelle 2

Tim Jenßen
quelle
2
Auch verwendet auf Ubuntu 16.04 (mit exportnicht set) und es löste das Problem.
Benjamin Conlan
Genius. Vielen Dank. Ich dachte, ich müsste meine JVM ändern
Flocken
1
Arbeitete wie ein Zauber unter Windows 10 mit Java 10
pabz
4
Leider scheint das in Java 11 vollständig entfernt worden zu sein.
Alastair Maw
Arbeitete export JAVA_OPTS = '-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'unter Ubuntu 18.04
e2-e4
25

Wenn Sie Ihre Java-Version nicht ändern möchten (ich nicht), können Sie die Version in Ihrer Shell vorübergehend ändern:

Erster Lauf

/usr/libexec/java_home -V

Wählen Sie dann eine Hauptversion aus, wenn Sie sie installiert haben, andernfalls installieren Sie sie zuerst:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Jetzt können Sie sdkmanager ausführen.

Sarah A.
quelle
2
$ /usr/libexec/java_home -Vgibt bash: /usr/libexec/java_home: No such file or directory. apt-file search /usr/libexec/java_homegibt genau nichts.
Tino
Haben Sie $ JAVA_HOME richtig eingestellt? Ausführen: echo "export JAVA_HOME=`/usr/libexec/java_home`" >> ~/.bashrc(oder Profil, wenn Sie Profil verwenden) - neu laden:. ~/.bashrc
Sarah A
Es gibt auch keine /usr/libexec. Bist du auf MacOS? (Ich bin auf Ubuntu / Linux und Ubuntu / Windows)
Tino
Ich benutze Mac. Wo ist dein Java_home?
Sarah A
20

Verwenden Sie unter Mac / Linux den folgenden Befehl:

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Funktioniert sowohl für JDK 9 als auch für JDK 10, ohne dass ein Skript (sdkmanager, avdmanager) gepatcht wird.

Für Java 11 siehe: https://stackoverflow.com/a/51644855/798165

oori
quelle
1
Vielen Dank! Es löst das Problem, wenn Sie JDK 9
Jorge Valvert
15

Ich habe zwei Antworten gefunden, die für mich funktionierten, ohne dass ich JDK 10 (oder 9) deinstallieren musste, das ich benötige create-react-app. Sowohl JDK 9 als auch JDK 10 sind nicht mit Android-SDK kompatibel!


Siu Ching Pong -Asuka Kenji- schlägt vor, das sdkmanagerSkript zu ändern und diese Zeile zu ersetzen:

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'  

mit:

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Beachten Sie, dass dieser Mod beim Aktualisieren von sdkmanager überschrieben wird.
Weitere Informationen finden Sie in seinem Beitrag und dem, auf den er verweist.
Diese Lösung war auch eine der Lösungen, die in diesem Thread zu Github-Problemen erwähnt wurden .


Der deutsche Beitrag gibt die Ursache des Konflikts an und enthält einen Fix, der nicht durch Updates überschrieben wird.
Er schlägt /Library/Java/JavaVirtualMachines/Info.plistvor, das Skript umzubenennen, um es aus dem Skript zu verdecken, das nach der höchsten Java-Version sucht, die sich auf Ihrem System befindet. Auf diese Weise wird JDK 8 standardmäßig zurückgegeben. Wenn Sie
explizit auf JDK 10 verweisen oder es auf setzen $JAVA_HOME, können Sie bei Bedarf JDK 10 anstelle der Standardeinstellung verwenden.
Details sind in seinem Beitrag.

SherylHohman
quelle
1
Hat meiner Meinung
Irgendwie, nachdem ich viel mit ao experimentiert habe. Android Studio, dieses Problem verschwand und der neue Fehler war Could not find or load main class java.se.ee- das Zurücksetzen der DEFAULT_JVM_OPTS hat dies behoben und das vorherige Problem wurde
behoben
3
Leider funktioniert das jetzt nicht. Das Ergebnis ist: Fehler beim Initialisieren der Boot-Schicht java.lang.module.FindException: Modul java.se.ee nicht gefunden
Oscar
1
Upvoted stackoverflow.com/a/49630166/5411817 für die richtige Lösung, um jdk-11 und jdk1.8 ohne Downgrade installiert zu halten
harrisjb
15

Sie müssen Ihrem Profil Folgendes hinzufügen (funktioniert unter MacOS):

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Sie müssen nichts patchen.

Farsheed
quelle
15

Installieren Sie einfach JDK Version 8 und wählen Sie es als Standard aus, indem Sie:

sudo update-alternatives --config java
Steven
quelle
10

Update 2019-10:

Wie im Issue-Tracker angegeben , hat Google an einer neuen Version der Android SDK-Befehlszeilentools gearbeitet , die auf aktuellen JVMs (9, 10, 11+) ausgeführt wird und nicht von veralteten JAXB EE-Modulen abhängt!

Sie können die neuen Android SDK-Befehlszeilentools in Android Studio herunterladen und verwenden oder sie manuell von den Google-Servern herunterladen:

Überprüfen Sie für die neuesten Versionen die URLs in der Datei repository.xml .

Wenn Sie die Befehlszeilentools manuell entpacken, müssen Sie sie in einem Unterordner in Ihrem $ANDROID_HOME(z $ANDROID_HOME/cmdline-tools/.... B. ) ablegen .

G00fY
quelle
Bei Verwendung von Java 9+ sollte dies von nun an die Antwort sein!
Luiggi Mendoza
9

Seltsamerweise ist Java9 nicht mit android-sdk kompatibel

$ avdmanager
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
    at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
    at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
    at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
    at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
    at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    ... 5 more

Kombiniert alle Befehle zu einem für eine einfache Referenz:

$ sudo rm -fr /Library/Java/JavaVirtualMachines/jdk-9*.jdk/
$ sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
$ sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane

$ /usr/libexec/java_home -V
Unable to find any JVMs matching version "(null)".
Matching Java Virtual Machines (0):
Default Java Virtual Machines (0):
No Java runtime present, try --request to install

$ brew tap caskroom/versions
$ brew cask install java8
$ touch ~/.android/repositories.cfg
$ brew cask install android-sdk
$ echo 'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"' >> ~/.bash_profile
$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
$ avdmanager

Usage:
      avdmanager [global options] [action] [action options]
      Global options:
  -s --silent     : Silent mode, shows errors only.
  -v --verbose    : Verbose mode, shows errors, warnings and all messages.
     --clear-cache: Clear the SDK Manager repository manifest cache.
  -h --help       : Help on a specific command.

Valid actions are composed of a verb and an optional direct object:
-   list              : Lists existing targets or virtual devices.
-   list avd          : Lists existing Android Virtual Devices.
-   list target       : Lists existing targets.
-   list device       : Lists existing devices.
- create avd          : Creates a new Android Virtual Device.
-   move avd          : Moves or renames an Android Virtual Device.
- delete avd          : Deletes an Android Virtual Device.
Nun, Smith
quelle
8

Da Java 11 JavaEE entfernt hat, müssen Sie einige Jars herunterladen und dem Klassenpfad hinzufügen:

JAXB: https://javaee.github.io/jaxb-v2/

JAF: https://www.oracle.com/technetwork/articles/java/index-135046.html

Bearbeiten Sie dann sdkmanager.bat so, dass set CLASSPATH = ... mit ;% CLASSPATH% endet

Stellen Sie CLASSPATH so ein, dass JAXB und JAF enthalten sind:

set CLASSPATH=jaxb-core.jar;jaxb-impl.jar;jaxb-api.jar;activation.jar

Dann funktioniert sdkmanager.bat.

Peter Quiring
quelle
Es funktioniert, aber ich erhalte die folgende Warnung: WARNUNG: Unzulässiger reflektierender Zugriff durch com.sun.xml.bind.v2.runtime.reflect.opt.Injector (Datei: / F: / android_sdk / java / jaxb-ri / lib / jaxb -impl.jar) zur Methode java.lang.ClassLoader.defineClass (java.lang.String, Byte [], int, int)
AndyMc
Ja, es sieht so aus, als würde Java vor einer schlechten Programmierpraxis warnen, bei der Reflexion verwendet wird, um die Klassensicherheit zu umgehen, die JAXB verwendet (Oracle verstößt gegen seine eigenen Regeln);)
Peter Quiring
4

Ich bin beim Ausführen auf dasselbe Problem gestoßen:

$ /Users/<username>/Library/Android/sdk/tools/bin/sdkmanager "platforms;android-28" "build-tools;28.0.3"_

Ich habe es gelöst als

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home    

$ ls /Library/Java/JavaVirtualMachines/

jdk-11.0.1.jdk      
jdk1.8.0_202.jdk

Ändern Sie Java in 1.8

$ export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home'

Dann läuft der gleiche Befehl einwandfrei

$ /Users/<username>/Library/Android/sdk/tools/bin/sdkmanager "platforms;android-28" "build-tools;28.0.3"
Sandeep
quelle
Dies ist der beste Fall. Wenn Sie JAVA_OPTS bereits exportieren. Bitte entfernen Sie es zuerst, bevor Sie die Schritte aus dieser Antwort ausführen.
Schwert Jason
4

Ich hatte das gleiche Problem. Obwohl ich ein wenig rückwirkender Entwickler bin (benutze immer noch Windows zum Entwickeln: P)

So lösen Sie dieses Problem unter Windows :

SCHRITT 1: Installieren Sie jdk 8, wenn es nicht installiert wurde (jdk 9 oder 11 funktionieren nicht, aber Sie können sie für andere Entwicklungszwecke installieren lassen).

Sehr einfach mit Chocolatey:

choco install jdk8

(Wenn Sie mit Chocolatey installiert haben, überspringen Sie die Schritte 2 und 3.)

SCHRITT 2: Gehen Sie zu den Einstellungen für Umgebungsvariablen und legen Sie das Installationsverzeichnis von JAVA_HOME TO jdk 8 fest.

JAVA_HOME

SCHRITT 3: Gehen Sie zur Pfadvariablen, fügen Sie das bin-Verzeichnis von jdk 8 hinzu und verschieben Sie es nach oben.

Path_varriable

SCHRITT 4: Schließen Sie alle offenen Terminalsitzungen und starten Sie eine neue Sitzung neu

OPTIONALER SCHRITT 5: Abhängig von Ihrem Ziel im Terminallauf (möglicherweise müssen Sie sdkmanager zum Pfad hinzufügen oder einfach zum Verzeichnis navigieren):

sdkmanager --update

Das ist alles! : O Viel Spaß beim Flattern! : D.

THE_BLESSED_MEDIUM
quelle
1
Dies zusammen mit der Top-Antwort funktionierte für mich unter Windows 10!
Mauriii
DANKESSSSSSSSSSSSS
Raghav Joshi
2

Für Windows-Computer deinstallieren Sie das JDK, wenn es mehr als 1.8.172 ist. Installieren Sie JDK 1.8.172

Ich hatte das gleiche Problem in Windows 10 mit Java 10. Ich habe Java 10 deinstalliert und Java8 installiert. Es funktioniert jetzt einwandfrei für mich :)

Jagan
quelle
2

Für Linux-Benutzer (ich verwende eine Debian-Distribution, Kali) So habe ich meine gelöst.

Wenn Sie jdk-8 noch nicht haben, möchten Sie es bei oracle erhalten

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Ich habe das jdk-8u191-linux-x64.tar.gz

Schritt 1 - Java Move installieren und an einem geeigneten Ort auspacken

$ mv jdk-8u191-linux-x64.tar.gz /suitablelocation/
$ tar -xzvf /suitablelocation/jdk-8u191-linux-x64.tar.gz

Sie sollten einen entpackten Ordner wie jdk1.8.0_191 erhalten. Sie können den Tarball anschließend löschen, um Platz zu sparen

Schritt 2 - Einrichten von Alternativen zum Standard-Java-Speicherort

$ update-alternatives --install /usr/bin/java java /suitablelocation/jdk1.8.0_191/bin/java 1
$ update-alternatives --install /usr/bin/javac javac /suitablelocation/jdk1.8.0_191/bin/javac 1

Schritt 3 - Wählen Sie Ihre Alternativen als Standard aus

$ update-alternatives --set java /suitablelocation/jdk1.8.0_191/bin/java
$ update-alternatives --set javac /suitablelocation/jdk1.8.0_191/bin/javac

Schritt 4 - Bestätigen der Standard-Java-Version

$ java -version

Anmerkungen

  1. Im Originalartikel hier: https://forums.kali.org/showthread.php?41-Installing-Java-on-Kali-Linux wurde auch das Standard-Plugin für Mozilla festgelegt. Ich gehe davon aus, dass wir die Plugins nicht wirklich brauchen, da wir einfach versuchen, sie für Android zu entwickeln.
  2. Wie in der Antwort von @ spassvogel sollten Sie auch eine @ repositories.cfg-Datei in Ihrem ~ / .android-Verzeichnis ablegen, da dies zum Aktualisieren der Repo-Listen der Tools erforderlich ist
  3. Das Verschieben einiger Dinge erfordert möglicherweise Root-Berechtigung. Verwenden Sie Sudo mit Bedacht.
  4. Informationen zur Verwendung von sdkmanager finden Sie im offiziellen Handbuch: https://developer.android.com/studio/command-line/sdkmanager
Hugovicfortman
quelle
1

Führen Sie java -versionund javac -versionBefehle in einer Befehlszeile aus, um sicherzustellen, dass sie aus demselben JDK stammen (z. B. Version 1.8.0_181).

Wenn nicht, müssen Sie die PATHVariable so ändern , dass sie nur auf ein einzelnes JDK verweist. Wenn Sie sich nicht sicher sind, wie Sie vorgehen sollen, deinstallieren Sie einfach alle anderen Java-Instanzen mit Ausnahme von Java 8 (Software in Windows). Für heute empfehlen sowohl Unity als auch Android die Verwendung von JDK 8.

Mit Java 8 ist es nicht erforderlich, das java.se.eeModul zu exportieren, wie in einigen anderen Antworten gezeigt. Sie können auch beliebige JAVA_OPTSoder andere von Ihnen festgelegte Umgebungsvariablen entfernen .

Gayan Weerakutti
quelle
1

Ich hatte dieses Problem kürzlich gelöst, indem ich die höhere Version von JDK deinstalliert und JDK 8 installiert habe. Nach der Installation des JDK müssen Sie den Pfad angeben. Dann müssen Sie die Eingabeaufforderung unter "C: \ Benutzer \ Mailand Adhikari \ AppData \ Local \ Android \ Sdk \ tools" öffnen und "sdkmanager --update" ausführen, wodurch Ihr SDK aktualisiert wird. Anschließend müssen Sie "Flutter Doctor -" ausführen. -android-licenses "in cmd und akzeptiere alle Lizenzen.
Jetzt sollte Ihr Problem gelöst sein.

Milan Adhikari
quelle
1

In meinem Fall benötige ich sowohl JDK 8 (versucht, den AVD- und SDK-Manager in Qt unter Ubuntu zu verwenden) als auch 11 für verschiedene Tools. Das Entfernen von Version 11 ist keine Option.

Die 'JAVA_OPTS'-Lösungen haben nichts getan. Ich mag den Export JAVA_HOME nicht wirklich, da er Sie möglicherweise dazu zwingt, das Tool zu starten, das diese Utils von derselben Shell (wie Qt) aus aufruft, oder Sie dazu zwingt, dies permanent zu machen, was nicht praktisch ist.

Für mich ist die Lösung also recht einfach. Fügen Sie so etwas in der zweiten Zeile von ~ / Android / tools / bin / sdkmanager und ~ / Android / tools / bin / avdmanager hinzu:

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

(oder was auch immer der Weg zu Ihrer Rev. 8 JDK ist).

Damit arbeiten diese Befehlszeilentools in einem eigenständigen Modus. Sie funktionieren auch, wenn sie von anderen Tools wie Qt aufgerufen werden, und jdk 11 ist immer noch die Systemvorgabe für andere. Keine Notwendigkeit, Bibliotheken usw. zu mischen ...

Der einzige Nachteil ist, dass bei jeder Aktualisierung dieser Befehlszeilentools diese Änderungen gelöscht werden, die Sie erneut vornehmen müssen.

Will59
quelle
OBEN! Danke!
Funder vor
0

Downgraden Sie Ihre Java-Version. Egal welches System oder welche Idee.

Stellen Sie sicher, dass die Java-Version nicht höher als 8 ist

In meinem Fall. Ich ändere die ide java verion. Dies löst mein Problem. Geben Sie hier die Bildbeschreibung ein

anKotliner
quelle
0

Wenn Ihr Android stuio / jre eine andere Version von Java verwendet, wird dieser Fehler angezeigt. Um es zu lösen, setzen Sie einfach Android Studio / Jre auf Ihr JAVA_HOME. und deinstallieren Sie Ihr eigenes Java.

Licat Julius
quelle
0

Für mich installiere ich Java Version 8 und wähle einfach die Java-Version unter "JDK-Speicherort" aus: Geben Sie hier die Bildbeschreibung ein

Michael Liesenberg
quelle
0

Unter meinen Umständen verwende ich sdkman, um mehrere Java-Versionen zu verwalten. Ich habe die Standard-Java-Version auf 13 gesetzt. Installieren Sie Version 8 und jetzt funktioniert es einwandfrei.

Brian Ng
quelle
0

Der beste Weg ist, den folgenden Befehl zu verwenden

   $ wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
   $ unzip \platform-tools-latest-linux.zip
   $ sudo cp platform-tools/adb /usr/bin/adb
   $ sudo cp platform-tools/fastboot /usr/bin/fastboot

Führen Sie nun die ADB-Version aus, um zu überprüfen, ob sie aktualisiert wurde.

Zishan Paya
quelle