Начало работы Android sdkmanager с Java 11 - PullRequest
0 голосов
/ 31 октября 2018

Я столкнулся с проблемой при работе Android sdkmanager с Java 11 (не студия, только инструменты SDK). Я не хочу устанавливать JDK 8 или что-то подобное. Есть ли способ исправить это для Android sdkmanager с JDK 11?

Я прошел через этот ответ , и он не предлагает исправления командной строки для Java 11. Любой другой возможный обходной путь?

Ответы [ 3 ]

0 голосов
/ 04 мая 2019

Если кто-то ищет исправление Linux для Java 11. Я построил его поверх ответа Вана

cd Android/tools/bin
mkdir jaxb_lib
wget http://central.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar -O jaxb_lib/activation.jar
wget http://central.maven.org/maven2/javax/xml/jaxb-impl/2.1/jaxb-impl-2.1.jar -O jaxb_lib/jaxb-impl.jar
wget http://central.maven.org/maven2/org/glassfish/jaxb/jaxb-xjc/2.3.2/jaxb-xjc-2.3.2.jar -O jaxb_lib/jaxb-xjc.jar
wget http://central.maven.org/maven2/org/glassfish/jaxb/jaxb-core/2.3.0.1/jaxb-core-2.3.0.1.jar -O jaxb_lib/jaxb-core.jar
wget http://central.maven.org/maven2/org/glassfish/jaxb/jaxb-jxc/2.3.2/jaxb-jxc-2.3.2.jar -O jaxb_lib/jaxb-jxc.jar
wget http://central.maven.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar -O jaxb_lib/jaxb-api.jar

После завершения загрузки (убедитесь, что все файлы были загружены в порядке), вы должны отредактировать сценарии sdkmanager и avdmanager. Прокрутите вниз до переменной CLASSPATH и добавьте только что загруженные файлы jar следующим образом:

CLASSPATH=$APP_HOME/bin/jaxb_lib/activation.jar:$APP_HOME/bin/jaxb_lib/jaxb-impl.jar:$APP_HOME/bin/jaxb_lib/jaxb-xjc.jar:$APP_HOME/bin/jaxb_lib/jaxb-core.jar:$APP_HOME/bin/jaxb_lib/jaxb-jxc.jar:$APP_HOME/bin/jaxb_lib/jaxb-api.jar:<etc etc...DO NOT REMOVE THE OTHER JARS!...>
0 голосов
/ 18 мая 2019

Исключение в потоке "main" java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema в com.android.repository.api.SchemaModule $ SchemaModuleVersion. (SchemaModule.java:156) на com.android.repository.api.SchemaModule. (SchemaModule.java:75) в com.android.sdklib.repository.AndroidSdkHandler. (AndroidSdkHandler.java:81) на com.android.sdklib.tool.sdkmanager.SdkManagerCli.main (SdkManagerCli.java:73) на com.android.sdklib.tool.sdkmanager.SdkManagerCli.main (SdkManagerCli.java:48) Вызывается: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema в java.base / jdk.internal.loader.BuiltinClassLoader.loadClass (BuiltinClassLoader.java:583) в java.base / jdk.internal.loader.ClassLoaders $ AppClassLoader.loadClass (ClassLoaders.java:178) в java.base / java.lang.ClassLoader.loadClass (ClassLoader.java:521) ... еще 5

Используя Java 12, я выполнил следующие шаги, чтобы обойти это предупреждение. Благодаря Ван Цянь.

Перейдите к пути, где установлен Android SDK, например, следующее.

%LOCALAPPDATA%\Android\Sdk\tools\bin

Редактировать sdkmanager.bat с помощью текстового редактора, такого как блокнот.

Найдите следующие строки приблизительно в строке 70.

@rem Execute sdkmanager
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%  -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%

Прямо над этими строками вставьте следующий код.

set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-api.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-core.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-impl.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-jxc.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-xjc.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\activation.jar

Создайте новую папку mylib в папке инструментов вашей установки Android SDK.

%LOCALAPPDATA%\Android\Sdk\tools\mylib

Загрузите последнюю версию следующих 6 jar-файлов и поместите их в папку mylib.

Удалите версии в именах файлов, чтобы они соответствовали именам файлов, заданным в файле sdkmanager.bat. Теперь у вас должны быть следующие файлы.

%LOCALAPPDATA%\Android\Sdk\tools\mylib\activation.jar
%LOCALAPPDATA%\Android\Sdk\tools\mylib\jaxb-api.jar
%LOCALAPPDATA%\Android\Sdk\tools\mylib\jaxb-core.jar
%LOCALAPPDATA%\Android\Sdk\tools\mylib\jaxb-impl.jar
%LOCALAPPDATA%\Android\Sdk\tools\mylib\jaxb-jxc.jar
%LOCALAPPDATA%\Android\Sdk\tools\mylib\jaxb-xjc.jar

Все готово! Теперь запустите команду sdkmanager --update

%LOCALAPPDATA%\Android\sdk\tools\bin\sdkmanager --update
0 голосов
/ 14 декабря 2018

Загрузите jxab и jaf, поместите их все в classpath.

, например

sdkmanager.bat

...
set CLASSPATH=%CLASSPATH%;mylib\jaxb-ri\lib\jaxb-api.jar
set CLASSPATH=%CLASSPATH%;mylib\jaxb-ri\lib\jaxb-core.jar
set CLASSPATH=%CLASSPATH%;mylib\jaxb-ri\lib\jaxb-impl.jar
set CLASSPATH=%CLASSPATH%;mylib\jaxb-ri\lib\jaxb-jxc.jar
set CLASSPATH=%CLASSPATH%;mylib\jaxb-ri\lib\jaxb-xjc.jar
set CLASSPATH=%CLASSPATH%;mylib\jaf-1.1.1\activation.jar

@rem Execute sdkmanager
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%  -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%
...
...