【问题标题】:DexOpt: illegal method access with Gson TypeTokenDexOpt:使用 Gson TypeToken 进行非法方法访问
【发布时间】:2017-01-08 04:28:09
【问题描述】:

我不知道从什么时候开始,但现在当我将我的应用程序部署到 Android 设备时,我会在 logcat 控制台中看到这些日志:

08-31 10:01:45.437 2157-2219/com.company.clap I/dalvikvm: DexOpt: illegal method access (call Lcom/google/gson/reflect/TypeToken;.<init> (Ljava/lang/reflect/Type;)V from Lcom/company/clapcore/service/ClapService$2;)
08-31 10:01:45.437 2157-2219/com.company.clap I/dalvikvm: Could not find method com.google.gson.reflect.TypeToken.<init>, referenced from method com.company.clapcore.service.ClapService$2.<init>
08-31 10:01:45.437 2157-2219/com.company.clap W/dalvikvm: VFY: unable to resolve direct method 15655: Lcom/google/gson/reflect/TypeToken;.<init> (Ljava/lang/reflect/Type;)V
08-31 10:01:45.437 2157-2219/com.company.clap D/dalvikvm: VFY: replacing opcode 0x70 at 0x0033
08-31 10:01:45.767 2157-2219/com.company.clap I/dalvikvm: DexOpt: illegal method access (call Lcom/google/gson/reflect/TypeToken;.<init> (Ljava/lang/reflect/Type;)V from Lcom/company/clapcore/service/ClapService$1;)
08-31 10:01:45.767 2157-2219/com.company.clap I/dalvikvm: Could not find method com.google.gson.reflect.TypeToken.<init>, referenced from method com.company.clapcore.service.ClapService$1.<init>
08-31 10:01:45.767 2157-2219/com.company.clap W/dalvikvm: VFY: unable to resolve direct method 15655: Lcom/google/gson/reflect/TypeToken;.<init> (Ljava/lang/reflect/Type;)V
08-31 10:01:45.767 2157-2219/com.company.clap D/dalvikvm: VFY: replacing opcode 0x70 at 0x0033

似乎没有任何与此相关的问题,我的应用程序仍在运行,但我讨厌在启动顺序中看到错误,而且我担心它会在以后隐藏一些错误。

ClapService 类只需像这样导入 TypeToken 包:

import com.google.gson.reflect.TypeToken;

并以各种方式使用它,例如:

private Object getPartialConfig(String settingName, TypeToken<?> typeToken) {
...
}

或者类似的东西:

private LocalizationConfig getLocalizationConfig() {
        return (LocalizationConfig)getPartialConfig("localizationSettings", new TypeToken<LocalizationConfig>() {});
    }

如果有人可以向我解释这个错误并告诉我如何摆脱它,我将不胜感激。谢谢!

【问题讨论】:

  • 我遇到了几乎相同的问题。你找到解决办法了吗?
  • 还没有。日志中仍然有相同的信息!

标签: android serialization gson dalvik typetoken


【解决方案1】:

尝试向ClapService添加一个空的构造函数

public ClapService() {
}

【讨论】:

  • 安装最新的 IntelliJ 后,错误不再显示...也许这是他们这边的错误。我将暂时打开问题并检查错误是否再次出现。
  • @Jean-FrançoisCôté 我已经对我的回答进行了更正,你应该试一试
  • @Jean-FrançoisCôté 另外,这可能与您正在运行的 IntelliJ 版本无关。更有可能使用您在项目中使用的 gson 库版本
猜你喜欢
  • 1970-01-01
  • 2022-12-29
  • 2017-01-08
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 2018-08-05
  • 1970-01-01
相关资源
最近更新 更多