Incluir .frasco para o projeto android (NoClassDefFoundError - VFY:não é possível resolver nova instância 812)

StackOverflow https://stackoverflow.com//questions/20001264

Pergunta

O que eu quero: Usar um arquivo jar que contém todas as minhas classes do modelo (para reutilização no webservice separei os modelos) no meu projeto android.Im novo para android, então eu acho que eu perdi alguma coisa?é necessário exportar minhas aulas de forma diferente quando usá-lo no android?

O que eu recebo:

`11-15 12:26:14.082: E/Trace(1776): error opening trace file: No such file or directory (2)
11-15 12:26:14.152: E/dalvikvm(1776): Could not find class 'ww.entities.model.User', referenced from method com.example.weightwatchersapp.MainActivity.onCreate
11-15 12:26:14.172: W/dalvikvm(1776): VFY: unable to resolve new-instance 812 (Lww/entities/model/User;) in Lcom/example/weightwatchersapp/MainActivity;
11-15 12:26:14.172: D/dalvikvm(1776): VFY: replacing opcode 0x22 at 0x000a
11-15 12:26:14.182: D/dalvikvm(1776): DexOpt: unable to opt direct call 0x1499 at 0x0c in Lcom/example/weightwatchersapp/MainActivity;.onCreate
11-15 12:26:14.212: W/System.err(1776): TEST
11-15 12:26:14.262: D/AndroidRuntime(1776): Shutting down VM
11-15 12:26:14.262: W/dalvikvm(1776): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
11-15 12:26:14.292: E/AndroidRuntime(1776): FATAL EXCEPTION: main
11-15 12:26:14.292: E/AndroidRuntime(1776): java.lang.NoClassDefFoundError: ww.entities.model.User
11-15 12:26:14.292: E/AndroidRuntime(1776):     at com.example.weightwatchersapp.MainActivity.onCreate(MainActivity.java:17)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.app.Activity.performCreate(Activity.java:5104)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.os.Looper.loop(Looper.java:137)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at android.app.ActivityThread.main(ActivityThread.java:5041)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at java.lang.reflect.Method.invokeNative(Native Method)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at java.lang.reflect.Method.invoke(Method.java:511)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-15 12:26:14.292: E/AndroidRuntime(1776):     at dalvik.system.NativeStart.main(Native Method)`

O que eu fiz: Para a geração que eu usei um simples projeto java (não um projeto de biblioteca ou algo assim e exportada como um vidro.Eu posso usar a mesma biblioteca em meu webservice projeto java sem problemas.

O que eu tentei: 1.Use gerado automaticamente classe MainActivity e adicione o seguinte código:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    System.err.println("TEST");// TODO: error here
    User user = new User();
    user.setDailyPoints(13);
}
  1. Adicionar ww-entidades para a pasta libs
  2. Clique com o botão direito lib e escolher "Add to build path"
  3. Limpar projeto
  4. Verificada ww-entities.jar em "a Ordem e a Exportação"
  5. Verificada Android Bibliotecas Privadas "Ordem e Exportação"

Eu tentei seguir um monte de linhas, que tratou de problemas semelhantes, mas de alguma forma parece que eu estou perdendo o ponto.(não há necessidade de dizer que sou novo no android e precisa de uma resposta global para noobies certo?^^)

Editar:

I´m using ormlite with my models so i.e. my class User looks like:
public class User implements Serializable {
    private static final long serialVersionUID = -2057474913370787753L;
    @DatabaseField(generatedId = true)
    private long id;
    @DatabaseField(canBeNull = false, unique = true)
    private String username;
    @DatabaseField
    private String password;
    @DatabaseField
    private String email;
    @DatabaseField
    private String forename;
    @DatabaseField
    private String surname;
    @DatabaseField
    private Date birthday;
    @DatabaseField
    private String sex;
    @DatabaseField
    private double height;
    @DatabaseField
    private int dailyPoints;
    @DatabaseField
    private int weeklyPoints;
    @DatabaseField(foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true)
    private OnlineUserFlags onlineUserFlags;
    @DatabaseField
    private boolean showProfileOnline;

    public User() {
    }

    public User(String username, String password, String email, String forename, String surname, Date birthday, String sex, double height, int dailyPoints, int weeklyPoints, OnlineUserFlags onlineUserFlags, boolean showProfileOnline) {
        super();
        this.username = username;
        this.password = password;
        this.email = email;
        this.forename = forename;
        this.surname = surname;
        this.birthday = birthday;
        this.sex = sex;
        this.height = height;
        this.dailyPoints = dailyPoints;
        this.weeklyPoints = weeklyPoints;
        this.onlineUserFlags = onlineUserFlags;
        this.showProfileOnline = showProfileOnline;
    }

    @Override
    public int hashCode() {
        //generated hascode method
    }

    @Override
    public boolean equals(Object obj) {
    //generated equals method
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
    //...getters/setters  
}

Nenhuma solução correta

Outras dicas

A maneira mais fácil de fazer isso (em ferramentas do SDK 0.22.2.1, pelo menos) é não exportar o frasco, mas em vez disso, adicione o seu ww-entities projeto como uma dependência do seu projeto android (Build Path > Projetos).

Em seguida, você precisará certifique-se de verificar ww-entities na Ordem e Exportação de guia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top