2013-11-15 4 views
0

내가 원하는 무엇 : 를 사용하여 내 모든 모델 클래스를 포함하는 jar 파일합니다 (웹 서비스의 재사용을 위해 내가 모델을 구분) 내 안드로이드 프로젝트에서. 나는 안드로이드를 처음 접했고 뭔가 놓친 것 같아? 안드로이드에서 사용할 때 수업을 다르게 내 보내야합니까?은 안드로이드 프로젝트의 .jar 포함 (NoClassDefFoundError를 - 실행 vFy : 새로운 인스턴스 (812)를 해결할 수없는)

은 내가 무엇을 얻을 :

`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)` 

내가 무슨 짓을 :. 그것이 내가이 같은 간단한 자바 프로젝트 (안 라이브러리 프로젝트 또는 무언가를 사용하고 항아리로 수출 생성 내 webservice 자바 프로젝트에서 아무 문제없이 동일한 라이브러리를 사용할 수 있습니다.

내가 시도한 것 : 1. 자동 생성 된 cl

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    System.err.println("TEST");// TODO: error here 
    User user = new User(); 
    user.setDailyPoints(13); 
} 
  1. 폴더를 LIBS하는 WW-엔티티를 추가
  2. lib 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 "경로를 구축하기 위해 추가"를 선택
  3. 클린 프로젝트
  4. 가 ww- 검사
  5. : 다음 코드를 MainActivity 엉덩이와 추가 "주문 및 내보내기"의 entities.jar
  6. "주문 및 내보내기"에서 검사 된 Android 개인 라이브러리

많은 스레드를 따라 가려고했는데 비슷한 문제를 처리했지만 어쨌든 요점을 놓치고있는 것 같습니다. (필요 안드로이드 오른쪽 noobies위한 포괄적 인 대답을 필요로하는 신참이 말 없습니다 ^^?)

편집 :

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 
} 

답변

0

이 일을하는 가장 쉬운 방법 (SDK 도구 0.22 인치 2.1 이상)은 항아리를 내보내는 것이 아니라 대신 ww-entities 프로젝트를 Android 프로젝트의 종속성 (Build Path> Projects)으로 추가하는 것입니다.

그러면 주문 및 내보내기 탭에서 ww-entities을 확인해야합니다.

+0

mh 나는 당신이 말한 것처럼 노력했지만, 슬프게도 나를 위해 작동하지 않습니다. 클래스가 내 자바 프로젝트에서 나를 위해 일하는 것처럼, 나는 그들과 함께 몇 가지 안드로이드 특정 문제를 가정 할 수 있습니다 ... 나는 그 모델에 대해 ormlite를 사용하고 있는데, 이것이 문제가 될 수 있습니까? – Asamandra

+0

ormlite가 문제가 될 것이라고 저는 믿지 않습니다. 앞으로 24 시간 동안 나 자신을 재현 해 볼 것입니다. – Martin

+0

고마워요! 몇 가지 추가 정보 : 클래스의 사용법은 잘 안드로이드 프로젝트로 복사하는 경우에 잘 작동합니다. 내가 개발 중에 프로젝트를 망쳤다 고 말했는데 (항아리는 이미 몇 주 전에 작동했습니다),하지만 저는 설정했습니다. 새로운 프로젝트를 시도하고 똑같은 시도하고 작동하지 않았다, 그래서 아마 안드로이드 버전 또는 매니 페스트 엉망이야? (sry 나는 그 안드로이드 프로젝트 물건으로 정말로 우둔 ...) – Asamandra