【问题标题】:Android NoSuchMethod errorAndroid NoSuchMethod 错误
【发布时间】:2017-02-02 19:06:41
【问题描述】:

我的应用程序在除一台设备(LG Leon,更新到 Android 6)之外的所有设备上都能完美运行,当我尝试打开存储的文件时它会崩溃。我明白了:

java.lang.NoSuchMethodError: No direct method <init>(Ljava/io/File;)V in class Lcom/leff/midi/MidiFile; or its super classes (declaration of 'com.leff.midi.MidiFile' appears in /system/framework/com.lge.frameworks.jar)

这是被调用的构造函数(使用用户选择的文件作为参数):

public MidiFile(File fileIn) throws FileNotFoundException, IOException
    {
        this(new FileInputStream(fileIn));
    }

【问题讨论】:

  • 忘记添加了,这在更新前有效。但其他搭载 Android 6 的设备也能完美运行。
  • 是我还是这个库是某人自己的私人作品https://github.com/LeffelMania/android-midi-lib与谷歌无关意味着更新无关?
  • 我不认为这个库有问题,在所有其他设备上都能完美运行。
  • 从表面上看,LG 确实添加了包,因为它从 com.lge.frameworks.jar 获取类,但也许他们忘记添加最新的。如果你自己打包可能会更好

标签: java android file-io fileinputstream fileoutputstream


【解决方案1】:

我在使用 Android 9 的 LG 用户中遇到了这个问题。似乎 LG 确实打包了一个没有此类或方法的旧版本。我建议你在你的应用程序中隐藏这个库,以确保你使用的是你自己的库,而不是优先使用的 LG 库。因此,将这些类复制到您的项目中并将包更改为类似 com.leff_shadowed.midi 并使用它。

遇到这些问题的用户报告说此更改解决了他的问题。

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2016-12-14
    • 2019-01-03
    相关资源
    最近更新 更多