2014-02-18 135 views
0

我已經使此測試項目嘗試使用ormlite將數據庫導出到csv文件。所以,我搜索了這個錯誤,嘗試了所有的其他職位建議的東西,全都導致了同樣的錯誤:Android無法實例化活動CompenentInfo Java.lang.ClassNotFoundException

02-17 14:33:24.810: E/AndroidRuntime(14351): FATAL EXCEPTION: main 
02-17 14:33:24.810: E/AndroidRuntime(14351): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.webs.dimensiongamesculpts.android_ormlite_sample_master/com.webs.dimensiongamesculpts.android_ormlite_sample_master.main}: java.lang.ClassNotFoundException: com.webs.dimensiongamesculpts.android_ormlite_sample_master.main in loader dalvik.system.PathClassLoader[/data/app/com.webs.dimensiongamesculpts.android_ormlite_sample_master-2.apk] 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1618) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.app.ActivityThread.access$1500(ActivityThread.java:124) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.os.Looper.loop(Looper.java:130) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.app.ActivityThread.main(ActivityThread.java:3806) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at java.lang.reflect.Method.invokeNative(Native Method) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at java.lang.reflect.Method.invoke(Method.java:507) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at dalvik.system.NativeStart.main(Native Method) 
02-17 14:33:24.810: E/AndroidRuntime(14351): Caused by: java.lang.ClassNotFoundException: com.webs.dimensiongamesculpts.android_ormlite_sample_master.main in loader dalvik.system.PathClassLoader[/data/app/com.webs.dimensiongamesculpts.android_ormlite_sample_master-2.apk] 
02-17 14:33:24.810: E/AndroidRuntime(14351): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
02-17 14:33:24.810: E/AndroidRuntime(14351): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1610) 
02-17 14:33:24.810: E/AndroidRuntime(14351): ... 11 more 

我在水庫的佈局文件夾中的main.xml中。我所有的外部罐子都在libs文件夾中。

這裏是我的Main.java文件:

package com.webs.dimensiongamesculpts.android_ormlite_sample_master; 

import com.webs.dimensiongamesculpts.android_ormlite_sample_master.R; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class Main extends Activity { 

    TextView txtOutput; 
    Repo repo; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     txtOutput = (TextView) findViewById(R.id.output); 

     repo = new Repo(this); 

     User user = new User("Bruno", "Shadow", "MySecretPassword", 
       "[email protected]"); 

     txtOutput.append("Creating User: " + user.getAlias()); 
     user.save(repo); 
     txtOutput.append("\nUser: " + user.getAlias() 
       + " created successfully!"); 
     user = repo.Users.getByUsername("Shadow"); 
     txtOutput.append("\nUser: " + user.getAlias() 
       + " retrieved successfully!"); 
     user.delete(repo); 
     txtOutput.append("\nUser: " + user.getAlias() 
       + " deleted successfully!"); 

    } 
} 

這裏是我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.webs.dimensiongamesculpts.android_ormlite_sample_master" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk 
     android:minSdkVersion="9" 
     android:targetSdkVersion="19" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".main" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 

在此先感謝任何人誰可能知道答案。

這裏是User.java:

package com.webs.dimensiongamesculpts.android_ormlite_sample_master; 

import com.webs.dimensiongamesculpts.android_ormlite_sample_master.Repo; 
import com.j256.ormlite.field.DatabaseField; 

public class User { 

    @DatabaseField(id = true) 
    String username; 
    @DatabaseField 
    String password; 
    @DatabaseField 
    String email; 
    @DatabaseField 
    String alias; 

    public User() { 
     // needed by ormlite 
    } 

    public User(String alias, String username, String password, String email) { 
     this.alias = alias; 
     this.username = username; 
     this.password = password; 
     this.email = email; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setAlias(String alias) { 
     this.alias = alias; 
    } 

    public String getAlias() { 
     return alias; 
    } 


    public int save(Repo repo) 
    { 
     if(repo.Users.getByUsername(username) == null) 
     { 
      return repo.Users.create(this); 
     } 
     else 
     { 
      return repo.Users.update(this); 
     } 
    } 

    public int delete(Repo repo) 
    { 
     return repo.Users.delete(this); 
    } 

    public String toString() 
    { 
     return alias; 
    } 

} 

這裏是DatabaseHelper.java:

package com.webs.dimensiongamesculpts.android_ormlite_sample_master; 

import java.io.IOException; 
import java.sql.SQLException; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.util.Log; 

import com.webs.dimensiongamesculpts.android_ormlite_sample_master.User; 
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; 
import com.j256.ormlite.dao.BaseDaoImpl; 
import com.j256.ormlite.dao.Dao; 
import com.j256.ormlite.dao.DaoManager; 
import com.j256.ormlite.support.ConnectionSource; 
import com.j256.ormlite.table.TableUtils; 

public class DatabaseHelper extends OrmLiteSqliteOpenHelper { 

    private static final String DATABASE_NAME = "db.sqlite"; 
    private static final int DATABASE_VERSION = 1; 

    private Dao<User, String> userDao = null; 


    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 

     DatabaseInitializer initializer = new DatabaseInitializer(context); 
     try { 
      initializer.createDatabase(); 
      initializer.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 


    @Override 
    public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { 
     try { 
      Log.i(DatabaseHelper.class.getName(), "onCreate"); 

      TableUtils.createTable(connectionSource, User.class); 

     } catch (SQLException e) { 
      Log.e(DatabaseHelper.class.getName(), "Can't create database", e); 
      throw new RuntimeException(e); 
     } 
    } 


    @Override 
    public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) { 
     try { 
      Log.i(DatabaseHelper.class.getName(), "onUpgrade"); 

      TableUtils.dropTable(connectionSource, User.class, true); 

      onCreate(db); 
     } catch (SQLException e) { 
      Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e); 
      throw new RuntimeException(e); 
     } 
    } 


    public Dao<User, String> getUserDao() throws SQLException { 
     if (userDao == null) { 
      userDao = DaoManager.createDao(getConnectionSource(), User.class); 
     } 
     return userDao; 
    } 



    @Override 
    public void close() { 
     super.close(); 
     userDao = null; 
    } 
} 
+0

您能向我們展示您的User類和您的數據庫輔助類嗎? – mjanes

+0

添加類 – user3321197

回答

0

在清單中將活動的名稱更改爲.Main而不是.main

+0

謝謝,這有幫助,但現在我得到一個新的錯誤,我將更新新的錯誤 – user3321197

+0

新的錯誤是什麼? – youssefhassan

+0

剛剛更新了 – user3321197

0

資本是非常重要的。將android:name=".main"更改爲android:name=".Main"

相關問題