2

Android でラムダジを使用しようとしていますが、単純な呼び出しを行うたびに例外 (java.lang.ExceptionInInitializerError) が発生します。

コレクションを満たすクラスは次のとおりです。

@DatabaseTable(tableName = "sections")
public class Section {

    @DatabaseField(id = true, unique = true)
    private int id;

    @DatabaseField(canBeNull = false)
    private String name;

    public Section() {

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

注釈は ORMLite によって使用されます。それらが何らかの形で関連する可能性がある場合に備えて、それらを残しました。私はそれを疑います。

そして今、次のような簡単な呼び出しをしようとすると、クラッシュします:

List<Section> sections = fillSections(); //this is correctly filled
select(sections, having(on(Section.class).getId(), Matchers.greaterThan(1)))

ログキャット:

 FATAL EXCEPTION: main
 java.lang.ExceptionInInitializerError
    at ch.lambdaj.proxy.ProxyUtil.createEnhancer(ProxyUtil.java:89)
    at ch.lambdaj.proxy.ProxyUtil.createProxy(ProxyUtil.java:49)
    at ch.lambdaj.function.argument.ArgumentsFactory.createPlaceholder(ArgumentsFactory.java:68)
    at ch.lambdaj.function.argument.ArgumentsFactory.registerNewArgument(ArgumentsFactory.java:58)
    at ch.lambdaj.function.argument.ArgumentsFactory.createArgument(ArgumentsFactory.java:50)
    at ch.lambdaj.function.argument.ArgumentsFactory.createArgument(ArgumentsFactory.java:39)
    at ch.lambdaj.Lambda.on(Lambda.java:63)

私を困惑させているのは、Javaコンソールアプリケーションでまったく同じコードを試してみたところ、うまくいったことです...

なぜこれが Android で動作しないのか、何か考えはありますか?

ありがとう。

4

1 に答える 1

5

どうやら、作成者の言葉によると、lambdaj は Android では動作しません。https://groups.google.com/d/msg/lambdaj/km7uFgvSd3k/grJhgl3ik5sJ

それを読んだ後、私はそれを自分で機能させようとするのをやめました。

于 2013-05-13T17:48:04.830 に答える