14

AndroidアプリでJacksonを使用しています。

ビルドパスに次の 2 つの 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 にあります)

私の Android のバージョンは 4.0.3 です。Spring Androidこれをライブラリと組み合わせて使用​​しています。

4

3 に答える 3

13

同様の問題がありました。Eclipse を使用していると仮定して、次のことを試してください。

  1. プロジェクトを右クリック
  2. [ビルド パス] > [ビルド パスの構成...] に移動します。
  3. [注文とエクスポート] タブをクリックします。
  4. jar の横にあるチェックボックスをオンにして、[OK] をクリックします。
  5. プロジェクトをクリーンアップしてビルドし、それが機能するかどうかを確認します。

うまくいけば、うまくいきます。

于 2013-01-03T00:12:46.940 に答える
11

これは、現在のデバイス OS バージョンに存在しないメソッドを呼び出すコードがある場合にも発生する可能性があります。

たとえば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. Android プロジェクトの Eclipse に外部 jar を追加するには、次のようにします
    。Project properties -> Java Build Path -> Libraries 次に、これらの外部 Jar ファイルを追加します。
    . プロジェクトのプロパティ -> Java ビルド パス -> 注文とエクスポート 次に、これらの外部 Jar ファイルを確認しました。
    ターゲット プロジェクトをクリーンアップして再構築し、apk ファイルのサイズを確認して、外部 jar でそれらの機能をテストできます。

  2. Android プロジェクトの Eclipse に外部 jar を追加するには、次のようにします
    。jar ファイルを Android プロジェクトの libs にコピーして完了です。

    #1 については、1 つのライブラリに対して複数のプロジェクトを扱うのは簡単です。
    #2 については、使いやすく、構成が不要です。

    それで全部です。
于 2014-01-17T07:23:33.137 に答える