【问题标题】:Android apkanalyzer, invoked by command line, gives a "NoClassDefFoundError" exception由命令行调用的 Android apkanalyzer 给出“NoClassDefFoundError”异常
【发布时间】:2019-04-17 08:26:13
【问题描述】:

我正在尝试运行 Android SDK 提供的 apkanalyzer 工具(在 Sdk/tool/bin 下),但我无法使其工作。我知道我也可以通过AndroidStudio使用这个工具,但是我需要自动化apk分析来覆盖很多APK。所以,我就跟着这个https://developer.android.com/studio/command-line/apkanalyzer 使用了。

无论如何,当我尝试启动 apkanalyzer(例如 apkanalyzer apk 摘要 APKname.apk)时,它会出现以下异常:

线程“主”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.tools.apk.analyzer.ApkAnalyzerCli.getAaptInvokerFromSdk(ApkAnalyzerCli.java:277) 在 com.android.tools.apk.analyzer.ApkAnalyzerCli.main(ApkAnalyzerCli.java:129) 引起: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:190) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) ... 5 更多

问题出在哪里?

【问题讨论】:

  • 你解决了吗?我遇到了同样的错误。
  • 不,不幸的是我没有弄清楚问题出在哪里。我只是手动完成了我需要的分析,编写了一个解包 APK 并提取我正在寻找的信息的小程序。

标签: java android apk android-sdk-tools


【解决方案1】:

我有同样的问题。我所要做的就是正确设置 JAVA_HOME。 我将 bashrc 中的 JAVA_HOME 设置为 $PATH_TO_ANDROIDSTUDIO/jre

我在 ~/.bashrc 中的确切陈述:

export JAVA_HOME=/home/rahul/Softwares/android-studio/jre

Mac 用户示例:

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

【讨论】:

    【解决方案2】:

    由于Android Studio 4.2 runs with java 11 instead of java 8,如果您将JAVA_HOME 指向您的AS 捆绑jdk,您可能还会在升级Android Studio 时注意到此错误。 (See also)

    恢复:

    1. 自己下载 jdk 8 (https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html)
    2. 找出 1.8 JAVA_HOME 路径(/usr/libexec/java_home -V on mac)
    Matching Java Virtual Machines (2):
        15.0.1, x86_64: "OpenJDK 15.0.1"    <path to have home1>
        1.8.0_291, x86_64:  "Java SE 8"     <path to have home2>
    
    1. 运行以下命令:
    export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/jre"
    

    【讨论】:

      猜你喜欢
      • 2023-02-10
      • 2016-06-14
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      相关资源
      最近更新 更多