首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决NoClassFound dif错误?

如何解决NoClassFound dif错误?
EN

Stack Overflow用户
提问于 2013-11-06 13:58:43
回答 3查看 91关注 0票数 0
代码语言:javascript
复制
public class RegisterActivity  extends Activity{
   TextView tv1,tv2;
   Button b;
    EditText email,nname,npassword,phone,repassword,usernam;
   ImageView iv;
     Button btnCreateAccount;
    private DatabaseRegister dbHelper;
@Override
  protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
     setContentView(R.layout.register);
//  dbHelper = new DatabaseRegister(this);
    dbHelper.open();

  initControls();
    }
       private void initControls()
      {
tv1=(TextView)findViewById(R.id.tv_register_job);
tv2=(TextView)findViewById(R.id.tv_fill_data);
    b=(Button)findViewById(R.id.btn_register);
       email=(EditText)findViewById(R.id.et_email);
      nname=(EditText)findViewById(R.id.et_name);
      npassword=(EditText)findViewById(R.id.et_password);
     phone=(EditText)findViewById(R.id.et_phone);
       repassword=(EditText)findViewById(R.id.et_repass);
       usernam=(EditText)findViewById(R.id.et_username);
      iv=(ImageView)findViewById(R.id.iv_search);
   btnCreateAccount.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    Log.i("click", "button");
   }
        });

          }
          private void ClearForm()
         {

        usernam.setText("");
           nname.setText("");
          npassword.setText("");
         email.setText("");
       repassword.setText("");
             phone.setText("");
          }
        private void RegisterMe(View v)
         {
//Get user details. 
String username = usernam.getText().toString();
String password = npassword.getText().toString();
String confirmpassword = repassword.getText().toString();
String name=nname.getText().toString();
String contact=phone.getText().toString();
String emailid=email.getText().toString();
//Check if all fields have been completed.
if (username.equals("") || password.equals("")||confirmpassword.equals("")||name.equals("")||contact.equals("")||email id.equals("")){
    Toast.makeText(getApplicationContext(), 
            "Please ensure all fields have been completed.",
              Toast.LENGTH_SHORT).show();
    return;
    }

//Check password match. 
   if (!password.equals(confirmpassword)) {
    Toast.makeText(getApplicationContext(), 
            "The password does not match.",
                Toast.LENGTH_SHORT).show();
                npassword.setText("");
                repassword.setText("");
    return;
   }

//Encrypt password with MD5.
password = md5(password);

//Check database for existing users.
Cursor user = dbHelper.fetchUser(username, password, confirmpassword, emailid, name, contact);
if (user == null) {
    Toast.makeText(getApplicationContext(), "Database query error",
              Toast.LENGTH_SHORT).show();
} else {
    startManagingCursor(user);

    //Check for duplicate usernames
    if (user.getCount() > 0) {
        Toast.makeText(getApplicationContext(), "The username is already registered",
                  Toast.LENGTH_SHORT).show();
        stopManagingCursor(user);
        user.close();
        return;
    }
    stopManagingCursor(user);
    user.close();
    user = dbHelper.fetchUser(username, password, emailid, name, contact, confirmpassword);
    if (user == null) {
        Toast.makeText(getApplicationContext(), "Database query error",
                  Toast.LENGTH_SHORT).show();
        return;
    } else {
        startManagingCursor(user);

        if (user.getCount() > 0) {
            Toast.makeText(getApplicationContext(), "The username is already registered",
                      Toast.LENGTH_SHORT).show();
            stopManagingCursor(user);
            user.close();
            return;
        }
        stopManagingCursor(user);
        user.close();
    }
    //Create the new username.
    long id = dbHelper.createUser(username, password, emailid, name, contact, confirmpassword);
    if (id > 0) {
        Toast.makeText(getApplicationContext(), "Your username was created",
                  Toast.LENGTH_SHORT).show();
        saveLoggedInUId(id, username, password,confirmpassword, emailid, name,contact);
        Intent i = new Intent(v.getContext(), MainActivity.class);
        startActivity(i);

        finish();
    } else {
        Toast.makeText(getApplicationContext(), "Failt to create new username",
                  Toast.LENGTH_SHORT).show();
            }
          }
     }

private void saveLoggedInUId(long id, String username, String password,String name,String contact,String email,String repass) {
SharedPreferences settings = getSharedPreferences(login.MY_PREFS, 0);
Editor editor = settings.edit();
editor.putLong("uid", id);
editor.putString("username", username);
editor.putString("password", password);
editor.putString("repass", repass);
editor.putString("name", name);
editor.putString("emailid", email);
editor.putString("contact", contact);

editor.commit();
          }
         /**
         * Hashes the password with MD5.  
           *        @param s
        * @return
     */
      private String md5(String s) {
          try {

MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();


StringBuffer hexString = new StringBuffer();
for (int i=0; i<messageDigest.length; i++)
    hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
return hexString.toString();

      } catch (NoSuchAlgorithmException e) {
return s;
   }
     }
      }

我正在做一个登录和注册表单,其中我的数据将被存储在SQLite数据库中。当我点击register按钮时,它给出了这个错误:

NoClassFound差异

我该如何解决这个问题?

这是我的logcat:

代码语言:javascript
复制
 11-06 06:03:32.951: I/dalvikvm(803): Could not find method      com.example.jobportal.RegisterActivity.RegisterMe
11-06 06:03:32.991: W/dalvikvm(803): VFY: unable to resolve virtual method 4635:   Lcom/android/database/DatabaseRegister;.fetchUser (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
11-06 06:03:32.991: D/dalvikvm(803): VFY: replacing opcode 0x74 at 0x00b8
11-06 06:03:33.036: I/dalvikvm(803): Could not find method com.android.database.DatabaseRegister.open, referenced from method com.example.jobportal.RegisterActivity.onCreate
11-06 06:03:33.036: W/dalvikvm(803): VFY: unable to resolve virtual method 4636: Lcom/android/database/DatabaseRegister;.open ()Lcom/android/database/DatabaseRegister;
11-06 06:03:33.041: D/dalvikvm(803): VFY: replacing opcode 0x6e at 0x000b
11-06 06:03:33.570: D/AndroidRuntime(803): Shutting down VM
11-06 06:03:33.570: W/dalvikvm(803): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
11-06 06:03:33.630: E/AndroidRuntime(803): FATAL EXCEPTION: main
11-06 06:03:33.630: E/AndroidRuntime(803): java.lang.NoClassDefFoundError: com.android.database.DatabaseRegister
11-06 06:03:33.630: E/AndroidRuntime(803):  at com.example.jobportal.RegisterActivity.onCreate(RegisterActivity.java:38)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.app.Activity.performCreate(Activity.java:5104)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.os.Looper.loop(Looper.java:137)
11-06 06:03:33.630: E/AndroidRuntime(803):  at android.app.ActivityThread.main(ActivityThread.java:5041)
11-06 06:03:33.630: E/AndroidRuntime(803):  at java.lang.reflect.Method.invokeNative(Native Method)
11-06 06:03:33.630: E/AndroidRuntime(803):  at java.lang.reflect.Method.invoke(Method.java:511)
11-06 06:03:33.630: E/AndroidRuntime(803):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-06 06:03:33.630: E/AndroidRuntime(803):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-06 06:03:33.630: E/AndroidRuntime(803):  at dalvik.system.NativeStart.main(Native Method)
EN

回答 3

Stack Overflow用户

发布于 2013-11-06 14:06:25

看起来您还没有初始化dbHelper对象。只需替换代码,如下所示:

代码语言:javascript
复制
     super.onCreate(savedInstanceState);
     setContentView(R.layout.register);
     dbHelper = new DatabaseRegister(this);// you need to initialize it before access.
     dbHelper.open();
票数 1
EN

Stack Overflow用户

发布于 2013-11-06 14:12:34

对于NoClassDefFoundError,我也遇到了同样的问题,我做了以下工作来解决这个问题。

  1. 转到project.
  2. Select "Java构建路径“的”属性“
  3. 选择”排序和导出“选项卡
  4. 您应该在此处看到所选项目的"src”和"gen“路径和依赖项。
  5. 列出它们的顺序首先是"src”,然后是"gen“path

H112I切换它们,以便在”src“H213G214之前构建"gen”文件夹

gen -项目中的自动化代码(从依赖项和引用中) src -项目中的源代码

不需要重新启动Eclipse。它才刚刚开始工作。

票数 0
EN

Stack Overflow用户

发布于 2013-11-06 14:17:46

您应该初始化btnCreateAccount

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19805135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档