Java 9でsdkmanager --listを実行できませんでした


94

ダウンロードしてインストールしました:

  • jdk-9.0.1_osx-x64_bin.dmgOracleのJDK()はこちら
  • こちらのsdk-tools-darwin-3859397.zip GoogleのAndroid SDK()。

PATH変数を構成した後、SDKコンポーネントを管理するためsdkmanagerandroidコマンドに代わるを実行してみました。ただし、次のように失敗しました。

$ sdkmanager --list
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

Javaのバージョンは次のとおりです。

$ java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

Java 8に戻らずに修正する方法を知っている人はいますか?

関連する質問


1
ただ疑問に思います:これを行う目的は何ですか?
GhostCat 2017年

2
Java 9の新機能を試しますが、同時にAndroidアプリを開発し、システムにJDKを1つだけ必要とします。
Siu Ching Pong -Asuka Kenji- 2017年

リンクされた回答はAndroid SDK固有ではありません。どのスクリプトを編集するか、どこを編集するかは指摘されていません。誰もがシェルスクリプトを知っているわけではないことに注意してください。これは、知っている人でも問題をすばやく解決するのに役立ちます。簡単な構成の問題を解決するために、自分で作成したものではないスクリプトを読みたいのですが、すでに誰かがテストした実用的な解決策がありますか?
Siu Ching Pong -Asuka Kenji- 2017年

2
その点については、コメントで指摘されているように、stackoverflow.com / questions / 46402772 / …を再度開くことを投票しました。
ナマン2017年

stackoverflow.com/q/46402772/142239が再び開かれるまで、これを削除しないでください。私の回答をそこにコピーします。StackOverflowの投稿のバックアップがありません。ありがとう!
Siu Ching Pong -Asuka Kenji- 2017年

回答:


159

助けを借りて、この答えは、私は正常に問題を解決しました。

で修正を適用しますsdkmanager。シェルスクリプトです。それは次の場所にあります。$android_sdk/tools/binどこ、$android_sdkあなたは、Android SDKを解凍した場所です。

  1. sdkmanagerお気に入りのエディターで開きます。
  2. DEFAULT_JVM_OPTS変数を設定する行を見つけます。私のコピーでは、31行目にあります。

    DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
  3. 変数に次のオプションを追加します:-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee引用に注意してください。私のコピーでは、行は次のようになります:

    DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
  4. ファイルを保存して、エディターを終了します。
  5. コマンドを再実行してください。

結果は次のとおりです。

$ sdkmanager --list
Installed packages:
  Path    | Version | Description              | Location
  ------- | ------- | -------                  | ------- 
  tools   | 26.0.1  | Android SDK Tools 26.0.1 | tools/  

Available Packages:
  Path                              | Version      | Description                      
  -------                           | -------      | -------                          
  add-ons;addon-g..._apis-google-15 | 3            | Google APIs                      
  add-ons;addon-g..._apis-google-16 | 4            | Google APIs                      
  add-ons;addon-g..._apis-google-17 | 4            | Google APIs                      
  add-ons;addon-g..._apis-google-18 | 4            | Google APIs                      
  add-ons;addon-g..._apis-google-19 | 20           | Google APIs                      
  add-ons;addon-g..._apis-google-21 | 1            | Google APIs                      
  add-ons;addon-g..._apis-google-22 | 1            | Google APIs                      
  add-ons;addon-g..._apis-google-23 | 1            | Google APIs                      
  add-ons;addon-g..._apis-google-24 | 1            | Google APIs
...

ほら!できます!

-編集:2017-11-07-

パッケージを更新するとシェルスクリプトが上書きされる可能性があるsdkmanager --updateため、を実行した後、上記の修正を再度適用する必要がある場合があります。sdkmanagertools

関連する回答

  • https://stackoverflow.com/a/43574427/142239
    • @ andy-guibertは、これを機能させるために必要なオプションを指摘しました。彼はまた、それらの神秘的なオプションが何を意味するかについても簡潔に述べています。

1
JDK 9移行ガイドに記載されているように、--add-modules java.se.ee一時的な回避策と見なす必要があります。java.xml.bindモジュールをJava SEおよびJDKから削除するという提案は、次のドラフト形式です:bugs.openjdk.java.net/browse/JDK-8189188
Alan Bateman

11
SDKソースファイルにパッチを適用するのJAVA_OPTSexport JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'はなく、単に環境変数をエクスポートしないのはなぜですか?
Rafa、2018

6
FWIW、私は今日Windows 10にJDKとAndroid SDKツールの両方をダウンロードしてインストールしset DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.eecom.android.sdklib.tool.SdkManagerCliクラスが正しく実行されるように行を設定する必要がありました
RJ Cuthbertson

1
私はこの解決策に落ち着きましたが(追跡しやすい)、代わりの「解決策」がここにあります。長期的な修正は素晴らしいでしょう。
SherylHohman

4
これ -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.eeまたは `--add-modules java.xml.bindは、Mac OS上のJava 11では機能しません。別のバージョンのJavaをインストールせずに修正するにはどうすればよいですか?
マニッシュ、

37

SDKMANAGER_OPTSでsdkmanagerオプションを設定できます。

例:

export SDKMANAGER_OPTS="--add-modules java.se.ee"
sdkmanager --list

4
Windowsでは引用符を省略してください:set SDKMANAGER_OPTS=--add-modules java.se.ee
Amfasis

18
java.se.eeはもう存在しません。
オスカー

2
この回答は古くなっています。誰かが修正してください
Developerium

21

承認された回答は2019年2月の時点で古くなっています。新しいバージョンのJavaに移行するまで機能する回答次に示しsdkmanagerます。しかし、それまでに、この問題はもうありません。

OpenJDK 10は、OpenJDK 11によってスーパーシードされました。OpenJDK11はまったく実装さjava.se.ee ていません。これは、追加のハックが--add-modules java.se.eeもはや何もしないことを意味します。また、更新が適切に構成されている場合、次回の更新時にOpenJDK 10がシステムから自動的に削除され、OpenJDK 11に置き換えられます。

内部をJava 8インストールにsdkmanager設定JAVA_HOME sdkmanagerて、Java 8 を使用するように変更します。デフォルトでは~/Android/Sdk/tools/bin/sdkmanagerです。

# Add default JVM options here. You can also use JAVA_OPTS and SDKMANAGER_OPTS to pass JVM options $
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions'
@rem Add default JVM options here. You can also use JAVA_OPTS and SDKMANAGER_OPTS to pass JVM options to this script.
set JAVA_HOME="C:\ProgramData\scoop\apps\android-studio\current\jre"
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."

このようにして、を同時に使用しながら、システムで正常で保守されたバージョンのJavaを使用し続けることができますsdkmanager

# Java
export JAVA_HOME=/usr/lib/jvm/default-java

そして今、修理するパイプラインがあります。


JAVA_HOMEのトップポイントをAndroid StudioからのJavaインストールに一時的に設定したので、この回答は
役に立ちました

2
set JAVA_HOME="...\android-studio\current\jre"Windows 10で私を助け、他のすべての答えはそれをしませんでした
NearHuscarl

set JAVA_HOME="C:\Program Files\Android\Android Studio\jre"Windows 10で動作しました。AndroidStudioパスを調べてください。元のJAVA_HOMEにJava 11を設定しました
notes-jj

19

システムにJava 11がある場合、提供されるソリューションは無効です。

この-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee or--add-modules java.xml.bindは、Mac OS上のJava 11では機能しません。

そのため、ここからJavaバージョンをバージョン8にダウングレードする必要があります。http//www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

インストールされているJavaバージョンの一覧表示

/usr/libexec/java_home -V

Java 11

export JAVA_HOME=$(/usr/libexec/java_home -v 11)

Java 1.8

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

次に行きます

cd ~/Library/Android/sdk/tools/bin

そして

./sdkmanager --licenses

1
私はこれを行ってもまだエラーが発生します:etc ...スレッド "main"の例外java.lang.NoClassDefFoundError:javax / xml / bind / annotation / XmlSchema .. Java 12.0.1を使用しています
james emanon

@jamesemanonは、変更を適用するために再起動を行う可能性があります。手がかりはありません。
thodwris

bash: /usr/libexec/java_home: file not found私のインストール時。
Eugene Gr。Philippov

13

Windowsの場合、何も機能しない場合は、次を試してください。

  • オープンsdkmanager.batメモ帳で。

  • 次の行を見つけます。

    %JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%

  • 追加 --add-modules java.xml.bind

変更された行は次のようになります。

%JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%


3
Windows 10で私のために働きました
AntonB

10

以前のコメントを読んだとき、このエラーは現在のSDKバージョンが最新のJavaバージョン9および10と互換性がないために発生しています。

したがって、それを解決するには、JavaバージョンをJava 8にダウングレードするか、回避策として次のオプションを端末にエクスポートできます。

Linux:

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

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

これは、このエラーを解決します sdkmanager

そして、それはあなたがLinux上で自分のプロファイルファイルでJAVA_OPTSをエクスポートする(することができます恒久的に保存されて作るため.zshrc.bashrcおよびなど)、またはWindows上で永続的に環境変数として追加します。


ps。これは、Java EEモジュールを持たないJava 11以降では機能しません。このオプションをお勧めします。Javaバージョンをダウングレードするか、Flutterの更新を待ちます。

参照:JDK 11:Java EEモジュールの終わり


11
これを試すと、別のエラーが発生します:ブートレイヤーの初期化中にエラーが発生しましたjava.lang.module.FindException:Module java.se.ee 'not found
Sherin Binu

@SherinBinuどのJavaバージョンを使用していますか?
valdeci 2018

1
--add-modules java.xml.bind代わりに使用してみてください--add-modules java.se.ee
valdeci

@valdeciそれは実際に機能しました!どうもありがとうございます!
Apoorv Goyal

10

アップデート2019-10:

問題追跡に記載されています、Googleは新しいSDKツールに取り組んできましたが、現在のJVM(9+)にその実行をリリース!

Android Studio内で、またはGoogleサーバーから手動でダウンロードすることにより、新しいAndroid SDKコマンドラインツール(1.0.0)をダウンロードして使用できます。

最新バージョンについては、内部のURLを確認してください repository.xml

コマンドラインツールを手動でアンパックする場合は、ツールを$ANDROID_HOME(などの$ANDROID_HOME/cmdline-tools/...)サブフォルダーに配置するように注意してください。


8

一部の人々が前に述べたように、これは非常によくあるJavaのインストールが他のJavaのインストールに優先することで行う必要があるより単純な問題である可能性があります。

私の場合、Java 8がデフォルトの新しいJavaに影を落とされていました。

私はJava 8をインストールしました:

sudo apt-get install openjdk-8-jdk

次に、インストールしたjavaを新しいデフォルトに更新しました。

sudo update-alternatives --config java

これにより、Java 8のID番号を選択しました。

これらの(かなり単純な)手順を実行した後、sdkmanagerをエラーなしで実行できました。

これが誰かを助けることを願っています!



5

機能するsdkmanager.batを追加するだけでこのソリューションを理解するのに苦労しました

@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  sdkmanager startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%..

@rem Add default JVM options here. You can also use JAVA_OPTS and SDKMANAGER_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."


@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar;%APP_HOME%\lib\layoutlib-api-25.3.1.jar;%APP_HOME%\lib\dvlib-25.3.1.jar;%APP_HOME%\lib\repository-25.3.1.jar;%APP_HOME%\lib\gson-2.2.4.jar;%APP_HOME%\lib\commons-compress-1.8.1.jar;%APP_HOME%\lib\httpclient-4.1.1.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\common-25.3.1.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\annotations-25.3.1.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\httpcore-4.1.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-codec-1.4.jar;%APP_HOME%\lib\guava-18.0.jar

@rem Execute sdkmanager
"%JAVA_EXE%" %DEFAULT_JVM_OPTS%  -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee  %JAVA_OPTS% %SDKMANAGER_OPTS%  -classpath "%CLASSPATH%" com.android.sdklib.tool.SdkManagerCli %CMD_LINE_ARGS%

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable SDKMANAGER_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%SDKMANAGER_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega

私は、これはSDKの新バージョンが出てきたときに、このコードスニペットは、ハードコーディングされたバージョンが含まれているため、動作を停止しますので、それが現実的な選択肢ではありません怖い:set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar
izogfif

4

私はAndroid Studio Itself内に埋め込まれたJavaを強制的に使用することで編集されたsdkmanager.batファイルを使用して問題を解決できました。

@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  sdkmanager startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%..

@rem Add default JVM options here. You can also use JAVA_OPTS and SDKMANAGER_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."

@rem find Java from Android Studio
@rem Find java.exe
if defined ANDROID_STUDIO_JAVA_HOME goto findJavaFromAndroidStudioJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

goto findJavaNormally

:findJavaFromAndroidStudioJavaHome
set JAVA_HOME=%ANDROID_STUDIO_JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

goto findJavaNormally




@rem java from java home
@rem Find java.exe
:findJavaNormally
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

goto javaError

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

goto javaDirectoryError



:javaError
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:javaDirectoryError
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail


:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\lib\dvlib-26.0.0-dev.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\jsr305-1.3.9.jar;%APP_HOME%\lib\repository-26.0.0-dev.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\layoutlib-api-26.0.0-dev.jar;%APP_HOME%\lib\gson-2.3.jar;%APP_HOME%\lib\httpcore-4.2.5.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-compress-1.12.jar;%APP_HOME%\lib\annotations-26.0.0-dev.jar;%APP_HOME%\lib\error_prone_annotations-2.0.18.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\httpclient-4.2.6.jar;%APP_HOME%\lib\commons-codec-1.6.jar;%APP_HOME%\lib\common-26.0.0-dev.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\sdklib-26.0.0-dev.jar;%APP_HOME%\lib\guava-22.0.jar

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

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable SDKMANAGER_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%SDKMANAGER_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega

ここでは、実際にAndroidスタジオに埋め込まれたJREを指す環境変数ANDROID_STUDIO_JAVA_HOMEを使用しました。例:../android_studio/jre

ANDROID_STUDIO_JAVA_HOMEが設定されていない場合、これにはJAVA_HOMEへのフォールバックもあります。


2

最新バージョンにアップグレードする前に、上記のopenSDK 11とAndroid SDKツールを使用した短い追加。

上記の解決策がうまくいかなかった

set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."

これを機能させるために、mavenリポジトリからjaxb-ri(参照実装)をインストールしました。

情報が与えられたhttps://github.com/javaee/jaxb-v2へとリンクをhttps://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-ri/2.3.2/jaxb -ri-2.3.2.zip
このダウンロードには、mod-Folderのスタンドアロンランタイム実装が含まれています。

mod-Folderを$ android_sdk \ tools \ lib \にコピーし、クラスパス変数に以下を追加しました:

;%APP_HOME%\ lib \ mod \ jakarta.xml.bind-api.jar;%APP_HOME%\ lib \ mod \ jakarta.activation-api.jar;%APP_HOME%\ lib \ mod \ jaxb-runtime.jar;% APP_HOME%\ lib \ mod \ istack-commons-runtime.jar;

最終的には次のようになります:

set CLASSPATH=%APP_HOME%\lib\dvlib-26.0.0-dev.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\jsr305-1.3.9.jar;%APP_HOME%\lib\repository-26.0.0-dev.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\layoutlib-api-26.0.0-dev.jar;%APP_HOME%\lib\gson-2.3.jar;%APP_HOME%\lib\httpcore-4.2.5.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-compress-1.12.jar;%APP_HOME%\lib\annotations-26.0.0-dev.jar;%APP_HOME%\lib\error_prone_annotations-2.0.18.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\httpclient-4.2.6.jar;%APP_HOME%\lib\commons-codec-1.6.jar;%APP_HOME%\lib\common-26.0.0-dev.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\sdklib-26.0.0-dev.jar;%APP_HOME%\lib\guava-22.0.jar;%APP_HOME%\lib\mod\jakarta.xml.bind-api.jar;%APP_HOME%\lib\mod\jakarta.activation-api.jar;%APP_HOME%\lib\mod\jaxb-runtime.jar;%APP_HOME%\lib\mod\istack-commons-runtime.jar;

いくつかのマイナーなエラーが表示されたため、おそらくlibを逃しました。しかし、sdkmanager.bat --updateまたは--listは現在実行中です。


2

これは私がUbuntu 18.04で行ったことです(どのLinuxでもできます):

$ sudo apt-get install openjdk-8-jdk

$ sudo update-alternatives --config java
There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                          Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/javac   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/javac   1111      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac    1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 2

$ export JAVA_HOME=$(/usr/lib/jvm/java-1.8.0-openjdk-amd64)

1

私にとって唯一有効な解決策は、Androidスタジオに同梱されているJavaを使用することです。

JAVA_HOMEを /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home

.bashrc

set JAVA_HOME="/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home"

fishシェルフを使用している場合は、これを~/.config/fish/config.fish

set -gx JAVA_HOME /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home

(これはMac用ですが、正しいパスを設定することにより、LinuxおよびWindowsで動作するはずです)


これにより、他のアプリケーションがOracleのJavaのオリジナル/非OpenJDKバージョンを使用しようとする場合があります。Eventhough OpenJDKは機能を超えているため、他のOpenJDKも必要になる場合があります。
Jemsheer KD

1

JDK 13.0.1、Android SDK 29、Windows 10

基本的に私はすべてを試しましたが、私のために働いた最も効果的で唯一の解決策はjdk 1.8にダウングレードすることでした。理由はわかりません。それは2020年の初めであり、最新のフラッターバージョンに対して1年前のjdkバージョンにダウングレードする必要があります。たぶん問題はWindowsバージョンにあります、jdk 13.0.1がmacOS 10.15.2で私のために働いた原因です このソリューションが機能することを願っています。

ダウンロードリンク(JDK 1.8.0):https : //www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


Java 8は2014年3月にリリースされました。つまり、1年以上前のものです...
pqnet

ええ..しかし、Java 8 .....以来、Oracleのポリシーは変更されました。それはもはや組織にとって無料ではありません。したがって、誰もがJava8を使用せざるを得ません
Kedar Sukerkar

問題は、新しいJavaランタイム(9以降)にjavaxライブラリがないことです。アプリケーションに同梱する必要があります。そのため、Java 8以前で実行することを想定して作成されたソフトウェアはこれらのライブラリを出荷しないため、9 +では動作しません。ご想像の通り、標準のJDKを完全にオープンソースにするため(これらのライブラリはGPLではありません)、ライセンス条項が改善されたと思います。
pqnet

1

.bashrcまたは.zshrcで異なるJDKバージョンのホームディレクトリを定義します。

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_14_HOME=$(/usr/libexec/java_home -v14)

まず、JDKバージョン8を使用します。この行をsdkmanagerファイルの先頭に置きます。

export JAVA_HOME=$JAVA_8_HOME

JDKバージョン14に切り替えます。次の行をsdkmanagerファイルの最後に置きます。

export JAVA_HOME=$JAVA_14_HOME

1

これは、JAXB API全体が削除されたため、Java 11以降でこの作業を行うための答えです。

Jakarta XML Binding、特にこのzipファイルをダウンロードします。modフォルダー内の3つのファイル(jakarta.activation.jar、jakarta.xml.bind-api.jar、jakarta.xml.bind-api.jar)のみが必要で、残りは捨てることができます。

これらのファイルをAPP_HOME / libフォルダーに移動します。そのために内部にサブフォルダjaxbを作成しました。したがって、私のmacOSシステムでは、これは$ HOME / Library / Android / sdk / tools / lib / jaxbでした。

次に、お気に入りのテキストエディターを使用してsdkmanagerを開き、CLASSPATH =の下に次の行を最初に追加します。

$APP_HOME/lib/jaxb/jakarta.activation.jar:$APP_HOME/lib/jaxb/jakarta.xml.bind-api.jar:$APP_HOME/lib/jaxb/jaxb-impl.jar

そのため、次のようになりました。

CLASSPATH=$APP_HOME/lib/jaxb/jakarta.activation.jar:$APP_HOME/lib/jaxb/jakarta.xml.bind-api.jar:$APP_HOME/lib/jaxb/jaxb-impl.jar:$APP_HOME/lib/dvlib-26.0.0-dev.jar:$APP_HOME/lib/jimfs-1.1.jar:$APP_HOME/lib/jsr305-1.3.9.jar:$APP_HOME/lib/repository-26.0.0-dev.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/layoutlib-api-26.0.0-dev.jar:$APP_HOME/lib/gson-2.3.jar:$APP_HOME/lib/httpcore-4.2.5.jar:$APP_HOME/lib/commons-logging-1.1.1.jar:$APP_HOME/lib/commons-compress-1.12.jar:$APP_HOME/lib/annotations-26.0.0-dev.jar:$APP_HOME/lib/error_prone_annotations-2.0.18.jar:$APP_HOME/lib/animal-sniffer-annotations-1.14.jar:$APP_HOME/lib/httpclient-4.2.6.jar:$APP_HOME/lib/commons-codec-1.6.jar:$APP_HOME/lib/common-26.0.0-dev.jar:$APP_HOME/lib/kxml2-2.3.0.jar:$APP_HOME/lib/httpmime-4.1.jar:$APP_HOME/lib/annotations-12.0.jar:$APP_HOME/lib/sdklib-26.0.0-dev.jar:$APP_HOME/lib/guava-22.0.jar

これで問題は解決します。

flutter doctor --android-licenses私に問題を与えていたので、私はこれらのステップを行いました。そして、これはそれを修正しました。


0

https://adoptopenjdk.netは現在、バージョン8以降のJDKのすべてのディストリビューションをサポートしています。たとえば、https://adoptopenjdk.net/releases.html#x64_win

JDKバージョン8をsdkmanagerなどで使用する方法の例を次に示します。https://travis-ci.com/mmcc007/screenshots/builds/109365628

JDK 9の場合(私は10、おそらく11、ただし12以降ではないと思います)、sdkmanagerを機能させるには次のように機能するはずです。

export SDKMANAGER_OPTS="--add-modules java.se.ee"
sdkmanager --list

1
SDK 12でこれを修正する方法のアイデアはありますか?
リッチー

@Richieあなたはこれを解決しましたか、私もJava 12を使用していて、この問題が発生しています。ここに投稿されているものは何も助けになりません。
james emanon

1
私が覚えているように、私はjava.se.eeを含むjarファイルをダウンロードしてパス(または類似の何か)に追加する必要があると思います。AFAIK Oracleは、12以降のJDKからJ2EE関連のjarをバンドルしていませんでした。これをsdkmanagerでテストしませんでした。
mmccabe

@jamesemanonなんとか解決できませんでした。上記の提案をお試しください
リッチー

0

このエラーの別の解決策は、Javaバージョンを確認することです。おそらく、このjdk oracle-jdk-8をダウンロードして解決できます 。これは私の間違いでした:P



0

Java 8 SDKをダウンロードします

  1. unistall java sdk previuse
  2. Androidスタジオを閉じる
  3. Java 8をインストールする
  4. run-> cmd-> flutter doctor --install -licenses 以降
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, v1.12.13+hotfix.9, on Microsoft Windows [Version 10.0.19041.388], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[√] Android Studio (version 4.0)
[√] VS Code (version 1.47.3)
[!] Connected device
    ! No devices available

! Doctor found issues in 1 category
display  and finish


-1

とても簡単です。 JAVA_HOMEです。環境変数を JDKインストールのパスに設定するです。

JavaをUbuntuに手動でインストールしたので、これは次のようになります。

export JAVA_HOME="$HOME/pkg-src/jdk1.8.0_251"

そして、それがあなたのパスにも存在することを確認してください...

export PATH="$PATH:$JAVA_HOME"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.