Androidプロジェクトへの.jarを含める(NoClassDeffoundError - vfy:新規インスタンス812を解決できません)
-
20-12-2019 - |
質問
欲しいもの: 私のAndroidプロジェクトのすべてのマイモデルクラスを含むJARファイル(Webサービスを区切ってモデルを区切ってください)を含むJARファイルを使用します。私はAndroidに新しいので、私は何かを逃したと思いますか? Androidで使用するときにクラスを異なる方法でエクスポートする必要がありますか?
私が得るもの:
`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)`
.
私がしたこと: それを生成するために、私は単純なJavaプロジェクト(ライブラリプロジェクトまたはこのようなものではなく、それをJARとしてエクスポートしました。 私は問題なく同じライブラリーを使用することができます。
私が試したもの: 1.自動生成クラスのメインアクティブを使用して、次のコードを追加します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.err.println("TEST");// TODO: error here
User user = new User();
user.setDailyPoints(13);
}
.
- libsフォルダにWW-Entitiesを追加
- LIBを右クリックして「ビルドパスに追加」を選択します。
- クリーンプロジェクト
- ww-entities.jarをチェックしました。
- Androidプライベートライブラリ
私はたくさんのスレッドをたどってください。 (私がAndroidに新しいことを言う必要はありません、そしてヌービーの包括的な答えが必要ですか?^^)
編集:
.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 }
正しい解決策はありません
他のヒント
これをやることの簡単な方法(少なくとも少なくとも)はJARをエクスポートしないことですが、代わりにww-entities
プロジェクトをあなたのAndroidプロジェクトの依存関係として追加します(Path> Projects)。
順序とエクスポートタブでは、必ずww-entities
を確認する必要があります。
所属していません StackOverflow