Android无法实例化activity CompentInfo Java.lang.ClassNotFoundException
我做这个测试项目是为了尝试使用ormlite将数据库导出到csv文件。因此,我搜索了这个错误,并尝试了其他帖子中建议的所有内容,所有这些都导致了相同的错误:Android无法实例化activity CompentInfo Java.lang.ClassNotFoundException,java,android,database,ormlite,Java,Android,Database,Ormlite,我做这个测试项目是为了尝试使用ormlite将数据库导出到csv文件。因此,我搜索了这个错误,并尝试了其他帖子中建议的所有内容,所有这些都导致了相同的错误: 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
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
我在res的layout文件夹中有一个main.xml。我所有的外部jar都在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@gmail.com");
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>
以下是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;
}
}
package com.webs.dimensiongamesculpts.android\u ormlite\u sample\u master;
导入java.io.IOException;
导入java.sql.SQLException;
导入android.content.Context;
导入android.database.sqlite.SQLiteDatabase;
导入android.util.Log;
导入com.webs.dimensiongamesculpts.android_ormlite_sample_master.User;
导入com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
导入com.j256.ormlite.dao.BaseDaoImpl;
导入com.j256.ormlite.dao.dao;
导入com.j256.ormlite.dao.DaoManager;
导入com.j256.ormlite.support.ConnectionSource;
导入com.j256.ormlite.table.TableUtils;
公共类DatabaseHelper扩展了OrmLiteSqliteOpenHelper{
私有静态最终字符串数据库\u NAME=“db.sqlite”;
私有静态最终int数据库_VERSION=1;
私有Dao userDao=null;
公共数据库助手(上下文){
super(上下文、数据库名称、null、数据库版本);
DatabaseInitializer initializer=新的DatabaseInitializer(上下文);
试一试{
initializer.createDatabase();
初始化器.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
@凌驾
public void onCreate(SQLiteDatabase db,ConnectionSource ConnectionSource){
试一试{
Log.i(DatabaseHelper.class.getName(),“onCreate”);
createTable(connectionSource,User.class);
}捕获(SQLE异常){
Log.e(DatabaseHelper.class.getName(),“无法创建数据库”,e);
抛出新的运行时异常(e);
}
}
@凌驾
public void onUpgrade(SQLiteDatabase db、ConnectionSource ConnectionSource、int oldVersion、int newVersion){
试一试{
Log.i(DatabaseHelper.class.getName(),“onUpgrade”);
TableUtils.dropTable(connectionSource,User.class,true);
onCreate(db);
}捕获(SQLE异常){
Log.e(DatabaseHelper.class.getName(),“无法删除数据库”,e);
抛出新的运行时异常(e);
}
}
公共Dao getUserDao()引发SQLException{
if(userDao==null){
userDao=DaoManager.createDao(getConnectionSource(),User.class);
}
返回userDao;
}
@凌驾
公众假期结束(){
super.close();
userDao=null;
}
}
资本化很重要。在清单中将android:name=“.main”
更改为android:name=“.main”
将活动名称更改为.main而不是.main谢谢,这很有帮助,但现在我遇到了一个新错误,我将用新错误更新帖子这是另一个问题,您在初始化数据库帮助程序时遇到了问题,我建议您将问题保持原样,打开新线程,以便获得有关数据库帮助程序问题的帮助。以下是指向我遇到的下一个错误的链接:您可以向我们显示您的用户类和数据库帮助程序类吗?
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;
}
}