我做了这个测试项目中尝试使用ormlite到数据库导出为CSV文件。所以,我已经搜查了这个错误,尝试了所有的其他职位提出的东西,所有产生相同的错误:
02-17 14:33:24.810:E / AndroidRuntime(14351):致命异常:主要
02-17 14:33:24.810:E / AndroidRuntime(14351):java.lang.RuntimeException的:无法实例活动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装载机dalvik.system.PathClassLoader[/data/app/com.webs.dimensiongamesculpts.android_ormlite_sample_master-2.apk]
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1618)
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716)
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.app.ActivityThread.access $ 1500(ActivityThread.java:124)
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:968)
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.os.Handler.dispatchMessage(Handler.java:99)
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.os.Looper.loop(Looper.java:130)
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.app.ActivityThread.main(ActivityThread.java:3806)
02-17 14:33:24.810:E / AndroidRuntime(14351):在java.lang.reflect.Method.invokeNative(本机方法)
02-17 14:33:24.810:E / AndroidRuntime(14351):在java.lang.reflect.Method.invoke(Method.java:507)
02-17 14:33:24.810:E / AndroidRuntime(14351):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
02-17 14:33:24.810:E / AndroidRuntime(14351):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-17 14:33:24.810:E / AndroidRuntime(14351):在dalvik.system.NativeStart.main(本机方法)
02-17 14:33:24.810:E / AndroidRuntime(14351):抛出java.lang.ClassNotFoundException:产生的原因com.webs.dimensiongamesculpts.android_ormlite_sample_master.main装载机dalvik.system.PathClassLoader[/data/app/com.webs.dimensiongamesculpts.android_ormlite_sample_master-2.apk]
02-17 14:33:24.810:E / AndroidRuntime(14351):在dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
02-17 14:33:24.810:E / AndroidRuntime(14351):在java.lang.ClassLoader.loadClass(ClassLoader.java:551)
02-17 14:33:24.810:E / AndroidRuntime(14351):在java.lang.ClassLoader.loadClass(ClassLoader.java:511)
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.app.Instrumentation.newActivity(Instrumentation.java:1021)
02-17 14:33:24.810:E / AndroidRuntime(14351):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1610)
02-17 14:33:24.810:E / AndroidRuntime(14351):11 ...更多
我在资源布局文件夹中的main.xml中。我的所有外部罐子libs文件夹中。
下面是我的Main.java文件:
包com.webs.dimensiongamesculpts.android_ormlite_sample_master;
进口com.webs.dimensiongamesculpts.android_ormlite_sample_master.R;
进口android.app.Activity;
进口android.os.Bundle;
进口android.widget.TextView;
公共类主要扩展活动{
TextView中为txtOutput;
回购回购;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
为txtOutput =(TextView中)findViewById(R.id.output);
回购=新的回购(本);
用户的用户=新用户(布鲁诺,影子,MySecretPassword
email@gmail.com);
txtOutput.append(创建用户:+ user.getAlias());
user.save(回购);
txtOutput.append( n用户:+ user.getAlias()
+创建成功!);
用户= repo.Users.getByUsername(影子);
txtOutput.append( n用户:+ user.getAlias()
+检索成功!);
user.delete(回购);
txtOutput.append( n用户:+ user.getAlias()
+删除成功!);
}
}
这里是我的AndroidManifest.xml:
< XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.webs.dimensiongamesculpts.android_ormlite_sample_master
安卓版code =1
机器人:VERSIONNAME =1.0>
<用途-SDK
安卓的minSdkVersion =9
机器人:targetSdkVersion =19/>
<应用机器人:图标=@可绘制/图标机器人:标签=@字符串/ APP_NAME>
<活动机器人:主名称=
机器人:标签=@字符串/ APP_NAME>
<意向滤光器>
<作用机器人:名称=android.intent.action.MAIN/>
<类机器人:名称=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT;
< /用途>
< /舱单>
在此先感谢任何人谁可能知道答案。
下面是User.java:
包com.webs.dimensiongamesculpts.android_ormlite_sample_master;
进口com.webs.dimensiongamesculpts.android_ormlite_sample_master.Repo;
进口com.j256.ormlite.field.DatabaseField;
公共类用户{
@DatabaseField(ID =真)
字符串的用户名;
@DatabaseField
字符串密码;
@DatabaseField
字符串的电子邮件;
@DatabaseField
字符串的别名;
公众用户(){
//需要ormlite
}
公众用户(别名字符串,字符串的用户名,密码字符串,字符串电子邮件){
this.alias =别名;
this.username =用户名;
this.password =密码;
this.email =电子邮件;
}
公共无效setUsername(字符串username){
this.username =用户名;
}
公共字符串getUsername(){
返回用户名;
}
公共无效setPassword(字符串密码){
this.password =密码;
}
公共字符串getPassword来(){
返回密码;
}
公共无效setEmail(字符串电子邮件){
this.email =电子邮件;
}
公共字符串getEmail(){
返回的电子邮件;
}
公共无效setAlias(字符串化名){
this.alias =别名;
}
公共字符串getAlias(){
返回别名;
}
公众诠释保存(回购回购)
{
如果(repo.Users.getByUsername(用户名)== NULL)
{
返回repo.Users.create(本);
}
其他
{
返回repo.Users.update(本);
}
}
公众诠释删除(回购回购)
{
返回repo.Users.delete(本);
}
公共字符串的toString()
{
返回别名;
}
}
下面是DatabaseHelper.java:
包com.webs.dimensiongamesculpts.android_ormlite_sample_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 {
私有静态最后弦乐DATABASE_NAME =db.sqlite;
私有静态最终诠释DATABASE_VERSION = 1;
民营道<使用者,字符串> userDAO的= NULL;
公共DatabaseHelper(上下文的背景下){
超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
DatabaseInitializer初始化=新DatabaseInitializer(上下文);
尝试 {
initializer.createDatabase();
initializer.close();
}赶上(IOException异常E){
e.printStackTrace();
}
}
@覆盖
公共无效的onCreate(SQLiteDatabase分贝,ConnectionSource connectionSource){
尝试 {
Log.i(DatabaseHelper.class.getName(),的onCreate);
TableUtils.createTable(connectionSource,User.class);
}赶上(的SQLException E){
Log.e(DatabaseHelper.class.getName(),无法创建数据库,E);
抛出新的RuntimeException(E);
}
}
@覆盖
公共无效onUpgrade(SQLiteDatabase分贝,ConnectionSource connectionSource,INT oldVersion,诠释静态网页){
尝试 {
Log.i(DatabaseHelper.class.getName(),onUpgrade);
TableUtils.dropTable(connectionSource,User.class,真正的);
的onCreate(DB);
}赶上(的SQLException E){
Log.e(DatabaseHelper.class.getName(),无法删除数据库,E);
抛出新的RuntimeException(E);
}
}
公众道<使用者,字符串> getUserDao()抛出的SQLException {
如果(userDAO的== NULL){
userDAO的= DaoManager.createDao(getConnectionSource(),User.class);
}
返回userDAO的;
}
@覆盖
公共无效的close(){
super.close();
userDAO的= NULL;
}
}
解决方案
在清单变化。主要代替。主要的活动的名称
I have made this test project to try to use ormlite to export a database to a csv file. So I have searched for this error and tried all of the things suggested in other posts, all resulting in the same error:
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
I have a main.xml in the layout folder in res. And all my external jars are in the libs folder.
Here is my Main.java file:
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!");
}
}
and here is my 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>
Thanks in advance to anyone who might know the answer.
Here is the 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;
}
}
Here is the 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;
}
}
解决方案
In the manifest change the name of the activity to .Main instead of .main
相关推荐
最新文章