14

我在我的安卓应用程序中使用杰克逊。

我在构建路径中添加了这两个 jar:

jackson-core-asl-1.0.0.jar
jackson-mapper-asl-1.0.0.jar

但是,我一直在我的 Logcat 中看到这个:

11-24 18:25:15.093: I/dalvikvm(28842): Could not find method org.codehaus.jackson.map.ObjectMapper.getTypeFactory, referenced from method org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.getJavaType
11-24 18:25:15.093: W/dalvikvm(28842): VFY: unable to resolve virtual method 17967: Lorg/codehaus/jackson/map/ObjectMapper;.getTypeFactory ()Lorg/codehaus/jackson/map/type/TypeFactory;

只能用那个方法。我在 StackOverflow 上搜索过类似的错误,但它们都是:

  • 库错误的版本(我的是正确的)
  • 不在 /libs 中但在 /lib 中的库(我在 /libs 中有它们)

我的安卓版本是 4.0.3。我将它与Spring Android库结合使用。

4

3 回答 3

13

我有类似的问题;假设您使用的是 Eclipse,请尝试以下操作:

  1. 右键单击您的项目
  2. 转到构建路径>配置构建路径...
  3. 单击“订购和导出”选项卡
  4. 选中 jar 旁边的框,然后单击 OK
  5. 清理并构建您的项目,然后查看它是否有效。

希望这行得通。

于 2013-01-03T00:12:46.940 回答
11

如果您有当前设备操作系统版本中不存在的代码调用方法,也会发生这种情况。

例如,如果您调用的应用程序中的某个位置(Settings.Global.getFloat(String)在 api 17 中添加)并且当前设备正在运行 api 15,您将在日志中看到此警告。

如果您实际尝试调用此方法,将会发生崩溃。不调用这个方法是没有问题的。因此,请确保在调用它之前始终检查当前版本。

    private float getAnimationSetting(ContentResolver contentResolver,
                                      String setting) throws Settings.SettingNotFoundException {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            return getAnimationSettingJB(contentResolver, setting);
        } else {
            return getAnimationSettingLegacy(contentResolver, setting);
        }
    }

    private float getAnimationSettingLegacy(ContentResolver contentResolver,
                                            String setting) throws Settings.SettingNotFoundException {
        return Settings.System.getFloat(contentResolver, setting);
    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    private float getAnimationSettingJB(ContentResolver contentResolver,
                                        String setting) throws Settings.SettingNotFoundException {
        return Settings.Global.getFloat(contentResolver, setting);
    }
于 2014-11-18T02:01:51.290 回答
1

就我而言,此解决方案无法正常工作。
检查jar文件的代码格式是否适合JDK 1.6,
我通过将我的lib代码格式从1.7更改为1.6发现了这个问题,这个问题将得到解决。

  1. 要在 Eclipse 上为 Android 项目添加一个外部 jar,我们可以这样做:
    。项目属性 -> Java Build Path -> Libraries 然后添加那些外部 Jar 文件。
    . Project properties -> Java Build Path -> Order & Export 然后检查那些外部 Jar 文件。
    您可以清理并重新构建目标项目以查看 apk 文件大小并在外部 jar 中测试这些功能。

  2. 要在 Eclipse 上为 Android 项目添加一个外部 jar,我们可以这样做:
    。将jar文件复制到android项目的libs中,然后完成。

    对于#1,很容易为一个库处理多个项目。
    对于#2,它易于使用且无需配置。

    就这样。
于 2014-01-17T07:23:33.137 回答