[!] android工具链-为android设备开发(android sdk 27.0.3)>>•android sdk a..\android\sdk•未配置android ndk位置(可选;对本机评测支持有用)•平台android-27,构建工具27.0.3•java二进制,位于c:\program files\android\android studio\jre\bin\java•java版本openjdk runtime environment(build 1.8.0\u 152-release-1024-b02)x android许可证状态未知。
当我运行flatter doctor时,android sdk出现了一个错误,尽管我仍然可以在我的设备上构建/运行它。我只是好奇如何解决这个问题。我相信我已经下载了最新版本的androidsdk,不知道发生了什么,因为我上周没有这个问题。
新问题在评论中经过几个可能的修复之后,它导致了一个新问题。我安装了新版本的androidsdkp、8和7以及新的jdk10。显然还不够更新。
C:\Flutter\flutter>flutter doctor --android-licenses
A newer version of the Android SDK is required. To update, run:
C:\Users\tdmil\AppData\Local\Android\sdk\tools\bin\sdkmanager --update
c:\flatter\flatter>c:\users\username\appdata\local\android\sdk\tools\bin\sdkmanager.bat--更新
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.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:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 5 more
13条答案
按热度按时间3ks5zfa01#
这也是我的问题,和16025一样
对于线程“main”java.lang.noclassdeffounderror:javax/xml/bind/annotation/xmlschema中的异常,当您以前安装过Java9时,此问题似乎通常会发生。顺便说一句,它与androidsdk不兼容。如果java9jdk仍然存在,请尝试删除它。
一般来说,jaxbapi被认为是javaeeapi,因此不再包含在javase9的默认类路径中。Java9引入了模块的概念,默认情况下,java.se聚合模块在类路径(或者更确切地说,模块路径)上可用。顾名思义,java.se聚合模块不包括传统上与Java6/7/8捆绑在一起的JavaEEAPI。幸运的是,jdk6/7/8中提供的这些javaeeapi仍然在jdk中,但它们只是默认情况下不在类路径上。以下模块提供了额外的javaeeapi
如果安装了java9/10,解决方案
在编辑器中打开sdkmanager。
附加默认值\u jvm\u opts
代替
用这个
保存文件并退出编辑器,然后再次尝试运行命令。
对于android许可证状态未知的问题,我尝试通过以下步骤来解决:
打开终端
转到android sdk位置c:\users%user%\appdata\local\android\sdk\tools\bin或~/library/android/sdk/tools/bin
运行命令:./sdkmanager--license
参考文献
无法使用java 9运行sdkmanager--list(android sdk)
如何解析java.lang.noclassdeffounderror:Java9中的javax/xml/bind/jaxbeException
0mkxixxg2#
对于那些使用linux并且在运行过程中不断出现错误的用户
flutter doctor --android-licenses
.在尝试接受许可证时,我不断收到“无法创建设置”警告,我通过指定sdk位置修复了该警告:
sdkmanager随后打印:接受所有sdk包许可证。
然而,flatter不断给出android许可证状态未知的错误。试图打电话
flutter doctor --android-licenses
会给我同样无法创建设置的错误,我用得到。为了解决这个问题,我编辑了
sdkmanager
脚本位于${your android tools location}/tools/bin/并将最后一行更改为:收件人:
这将使flatter调用sdkmanager,同时传递所需的sdk\u root参数,这是对的最后一个调用
flutter doctor --android-licenses
解决了这个问题。okxuctiv3#
只需在androidstudio中安装下面的sdk命令行工具(最新版本)。
lymgl2op4#
以下是我的解决方案:
安装sdkman
$ curl -s "https://get.sdkman.io" | bash
设置bash\u配置文件$ source "$HOME/.sdkman/bin/sdkman-init.sh
$ source ~/.bash_profile
找到java sdk,然后选择“要安装的版本”$ sdk ls java
$ sdk install java 8.0.192-zulu
复制Flutter医生警告消息以更新sdkmanager$ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update
1~4秒后,重做$ flutter doctor --android-licenses
h9a6wy2h5#
如果您更新了android sdk,许可证可能已经更改。根据更新的方式,可能会提示您接受更改,也可能不会提示您接受更改,也可能只是以flifter可以理解的方式保存了您接受更改的事实。
若要解决此问题,请尝试运行
这将提示您接受许可证(如果只是键入
y
然后按回车键(尽管它会告诉你)。如果这样做之后仍然有问题,那么在flattergithub存储库中打开一个新的bug,或者添加一个对现有问题的评论,就像您看到的那样。
bvhaajcl6#
以下是解决问题的步骤:
打开终端
类型
flutter doctor --android-licenses
按y
要接受,此过程可能会发生多次。完成!dm7nw8vv7#
github问题社区提供的这一行修复了我的问题,这里只是为了以防万一,它可以帮助其他人。
hmae6n7t8#
macos 10.15:android studio 3.5.1:
我的解决方案是使用java环境工具
jenv
(通过自制软件安装)。当在java版本之间切换时,此工具会更改$java\u home。在我的例子中,我安装了多个java版本,当前使用的全局版本是默认版本。我还发现有必要在我的文档中注解掉$java\u home环境变量
.bash_profile
使用此工具时。在候机楼,我进去了
jenv global 1.8
为了让Java1.8运行而不是更高版本(我安装了多个版本)。之后:
flutter doctor --android-licenses
或者sdkmanager --licenses
两者都很好。注意:如果必须重新定义$java\u home环境变量,则可能需要退出并重新打开终端shell。
lh80um4z9#
参考--https://robbinespu.gitlab.io/blog/2020/03/03/flutter-issue-fixed-android-license-status-unknown-on-windows/
因此,在这里的解决方案,打开您的sdk管理器,然后取消选中
Hide Obsolete Packages
现在你会明白的
Android SDK Tools (Obsolete) 26.1.1
出现。勾选那个包裹然后点击apply button
然后单击“确定”按钮。它将下载sdk。那么restart
安卓工作室很好,现在如果你跑的话
flutter doctor
,你应该得到如下积极的结果跑
flutter doctor --android-licenses
当被要求时输入y如果需要,我们可以在这里手动下载包https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip (适用于windows用户)。希望本教程能帮助那些寻找解决方案的人
q9rjltbz10#
我发现这个解决方案是为了使用jdk8(你现在需要一个帐户来下载!)使用android studio附带的嵌入式openjdk:
将此添加到您的
~/.profile
或类似:命令行生成通过
gradlew
,以及任何其他行为良好的脚本,然后将使用androidstudio2.2+附带的sdk版本。muk1a3rh11#
我写这个是因为在安装Flutter沮丧。。。大多数问题都是由简单的配置问题引起的。按照以下步骤解决问题。
第一步:android许可证——android许可证,可以解决大多数情况
既然你在这里,你已经达到了android工具链的“android许可证状态未知”问题,正如许多人建议的那样
flutter doctor --android-licenses
. 如果你擅长所有的配置。它应该请求“是”,然后按“是”和“瞧”。但如果它显示出未找到android sdkmanager工具
(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)
. 转到第二步第2步:从android studio安装sdk管理器
打开你的android工作室,
File-> settings->System settings(left tab) ->Android SDK,
去SDK Tool section
在该页面中,取消选中隐藏过时的包,然后选择Android SDL tools(obsolete)
然后按apply。它将安装sdk,您可以通过检查此路径是否存在来确认它
(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)
第3步:重复1在新命令行中安装后重复步骤1,检查其是否正常工作,否则转到步骤4
步骤4:sdkmanager—更新
它会要求您更新sdk,只需运行终端中给出的命令
C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update
. 如果它正在运行,那么它很酷。让它完成并重复步骤1,否则如果它抛出一些异常,比如java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
等,这意味着您的java没有安装或版本不正确。转到下一步
步骤5:Java8.1和JavaU主路径。
安装Java8.1并设置Java8.1的主路径。确保它是版本8.1(注册免费帐户并从oracle下载8.1版本,记住以上11+不会为Flutter工作
注意:如果您的计算机上已经安装了java,并且sdkmanager——更新仍然不起作用。转到环境变量并将“javahome”路径更新到jdk文件夹。然后退出命令提示符,再次打开并运行update命令-
第六步:最后一步
正确安装和设置路径后,运行
C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update
命令在新的终端,它将工作第7步:重新运行flatter-doctor,您可以看到它说要运行命令
flutter doctor --android-licenses
. 所以快跑flutter doctor --android-licenses
在终端中,询问时按ymyss37ts12#
正确的解决方案是安装androidstudio
打开sdk管理器
在sdk工具下,取消选中底部的隐藏过时包
然后您应该看到一个名为
Android SDK Tools (Obsolete)
检查并申请,让工作室下载包
完成后运行命令
flutter doctor
现在它应该提示您运行flutter doctor --android-licenses
运行license命令后,按y键接受所有许可证,应该可以解决问题py49o6xq13#
错误:
是因为当前sdk版本与java 9不兼容。
因此,要解决这个问题,您可以将java版本降级为java 8,或者通过解决方法,您可以在终端上导出以下选项:
linux操作系统:
Windows:
为了保持一致,您可以在linux上导出概要文件中的java\u选项(
.zshrc
,.bashrc
等)或在windows上永久添加为环境。然后,可以键入flatter或sdkmanager命令:
Flutter:
SDK管理员:
并在需要接受许可证时键入y。
另外,这对没有JavaEE模块的Java11/11+不起作用。对于这个选项是一个好主意,降级您的java版本或等待flutter更新。
参考:jdk 11:javaee模块之路的尽头