我一直在构建一个自定义 Java 库,在将其导入我的 Android 项目后,java.lang.NoClassDefFoundError
当我尝试使用它时,它会导致一个结果。
我的库曾经是我项目的一部分,但我决定“拆分”它,并创建一个 Java 库。它导入了一些工作所需的库(org.json ...),并且有两个包。
要将它包含到我的 Android 项目中,我只是将我的库复制/粘贴到libs
我的 Android 项目的文件夹中,Eclipse 会检测到它,并且不会在我的代码中显示任何错误,并且该库似乎已添加到“ Android 依赖项”文件夹。但是,当我运行该项目时,我需要我的库的第一行中有一个 java.lang.NoClassDefFoundError 异常。
如果你们中的一个人可以帮助我解决这个问题,我将不胜感激。我什至看不到我做错了什么...
编辑:您可以在这里找到我正在使用的 jar:https ://docs.google.com/file/d/0B1rK0R07j--QZmJFMUpLVEdMNnc/edit?usp=sharing和来源https://github.com/MagicMicky /习惯RPGJavaAPI
注意:该库似乎适用于普通的 Java 项目。
我的LOGCAT如下:
05-21 00:27:59.349: E/AndroidRuntime(11797): FATAL EXCEPTION: main
05-21 00:27:59.349: E/AndroidRuntime(11797): java.lang.NoClassDefFoundError: com.magicmicky.habitrpgmobileapp.MainActivity$1
05-21 00:27:59.349: E/AndroidRuntime(11797): at com.magicmicky.habitrpgmobileapp.MainActivity.<init>(MainActivity.java:44)
05-21 00:27:59.349: E/AndroidRuntime(11797): at java.lang.Class.newInstanceImpl(Native Method)
05-21 00:27:59.349: E/AndroidRuntime(11797): at java.lang.Class.newInstance(Class.java:1319)
05-21 00:27:59.349: E/AndroidRuntime(11797): at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
05-21 00:27:59.349: E/AndroidRuntime(11797): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
05-21 00:27:59.349: E/AndroidRuntime(11797): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-21 00:27:59.349: E/AndroidRuntime(11797): at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-21 00:27:59.349: E/AndroidRuntime(11797): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-21 00:27:59.349: E/AndroidRuntime(11797): at android.os.Handler.dispatchMessage(Handler.java:99)
05-21 00:27:59.349: E/AndroidRuntime(11797): at android.os.Looper.loop(Looper.java:137)
05-21 00:27:59.349: E/AndroidRuntime(11797): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-21 00:27:59.349: E/AndroidRuntime(11797): at java.lang.reflect.Method.invokeNative(Native Method)
05-21 00:27:59.349: E/AndroidRuntime(11797): at java.lang.reflect.Method.invoke(Method.java:511)
05-21 00:27:59.349: E/AndroidRuntime(11797): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-21 00:27:59.349: E/AndroidRuntime(11797): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-21 00:27:59.349: E/AndroidRuntime(11797): at dalvik.system.NativeStart.main(Native Method)
MainActivity.java:44 是我使用库的第一行...
Edit2:这是我的 Android 项目的第一行:
包 com.magicmicky.habitrpgmobileapp;
import java.util.ArrayList;
import java.util.List;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.magicmicky.habitrpgmobileapp.habits.HabitItem;
import com.magicmicky.habitrpgmobileapp.habits.User;
import com.magicmicky.habitrpgmobileapp.onlineapi.GetUser;
import com.magicmicky.habitrpgmobileapp.onlineapi.HostConfig;
import com.magicmicky.habitrpgmobileapp.onlineapi.OnHabitsAPIResult;
import com.magicmicky.habitrpgmobileapp.onlineapi.WebServiceInteraction.Answer;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends SherlockFragmentActivity {
MyPagerAdapter fgsAdapter;
private TextView username_TV;
/* Other decarations...*/
private User user;//Note that this line is from my library, but doesn't throw an exception
OnHabitsAPIResult callback = new OnHabitsAPIResult() { // And this is line 44...
Handler mainHandler;
private int nbRequests=0;
@Override
public void onUserReceived(final User us) {
mainHandler = new Handler(getMainLooper());
Runnable myRunnable = new Runnable(){
public void run() {
user=us;
notifyDataChanged();
afterResults();
}
};
mainHandler.post(myRunnable);
}
};
/* And code continues...*/
请注意,如果我将库文件复制/粘贴到项目中(而不是导入 jar 库),则此代码运行良好...