错误:java.lang.ClassNotFoundException
它一直说找不到类,但我似乎在任何Java类中都没有看到任何错误。这是因为清单文件或Java构建路径中出现错误吗?请帮忙。为什么问问题这么难。它一直在说,给更多的细节和东西 这是logcat错误:java.lang.ClassNotFoundException,java,android,Java,Android,它一直说找不到类,但我似乎在任何Java类中都没有看到任何错误。这是因为清单文件或Java构建路径中出现错误吗?请帮忙。为什么问问题这么难。它一直在说,给更多的细节和东西 这是logcat 04-21 04:41:21.709: E/AndroidRuntime(1179): FATAL EXCEPTION: main 04-21 04:41:21.709: **E/AndroidRuntime(1179): java.lang.RuntimeException: Unable to get
04-21 04:41:21.709: E/AndroidRuntime(1179): FATAL EXCEPTION: main
04-21 04:41:21.709: **E/AndroidRuntime(1179): java.lang.RuntimeException: Unable to get provider com.work.pets.data.PetProvider: java.lang.ClassNotFoundException: com.work.pets.data.PetProvider**
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.app.ActivityThread.installProvider(ActivityThread.java:4563)
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.app.ActivityThread.installContentProviders(ActivityThread.java:4190)
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4132)
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.app.ActivityThread.access$1300(ActivityThread.java:130)
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.os.Handler.dispatchMessage(Handler.java:99)
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.os.Looper.loop(Looper.java:137)
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.app.ActivityThread.main(ActivityThread.java:4745)
04-21 04:41:21.709: E/AndroidRuntime(1179): at java.lang.reflect.Method.invokeNative(Native Method)
04-21 04:41:21.709: E/AndroidRuntime(1179): at java.lang.reflect.Method.invoke(Method.java:511)
04-21 04:41:21.709: E/AndroidRuntime(1179): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-21 04:41:21.709: E/AndroidRuntime(1179): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-21 04:41:21.709: E/AndroidRuntime(1179): at dalvik.system.NativeStart.main(Native Method)
04-21 04:41:21.709: E/AndroidRuntime(1179): Caused by: java.lang.ClassNotFoundException: com.work.pets.data.PetProvider
04-21 04:41:21.709: E/AndroidRuntime(1179): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
04-21 04:41:21.709: E/AndroidRuntime(1179): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
04-21 04:41:21.709: E/AndroidRuntime(1179): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
04-21 04:41:21.709: E/AndroidRuntime(1179): at android.app.ActivityThread.installProvider(ActivityThread.java:4548)
04-21 04:41:21.709: E/AndroidRuntime(1179): ... 12 more
04-21 04:41:21.713: W/ActivityManager(337): Force finishing activity com.work.pets/.Main
这是Provider类的完整代码
package data;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.util.Log;
import data.PetContract.PetEntry;
public class PetProvider extends ContentProvider{
private static final int PETS=100;
private static final int PET_ID=101;
public static final String LOG_TAG = PetProvider.class.getSimpleName();
private static final UriMatcher sUriMatcher=new UriMatcher(UriMatcher.NO_MATCH);
static{
sUriMatcher.addURI(PetContract.CONTENT_AUTHORITY, PetContract.PATH_PETS, PETS);
sUriMatcher.addURI(PetContract.CONTENT_AUTHORITY, PetContract.PATH_PETS + "/#", PET_ID);
}
private PetDbHelper nDbHelper;
@Override
public boolean onCreate() {
nDbHelper = new PetDbHelper(getContext());
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
SQLiteDatabase database = nDbHelper.getReadableDatabase();
Cursor cursor;
int match = sUriMatcher.match(uri);
switch(match){
case PETS:cursor = database.query(PetEntry.TABLE_NAME, projection,
selection, selectionArgs, null, null, sortOrder);
break;
case PET_ID:
selection = PetEntry._ID + "=?";
selectionArgs = new String[]{String.valueOf(ContentUris.parseId(uri)) };
cursor = database.query(PetEntry.TABLE_NAME, projection, selection,
selectionArgs, null, null, sortOrder);
break;
default:
throw new IllegalArgumentException("Cannot query unknown URI" + uri);
}
return cursor;
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues contentvalues) {
final int match = sUriMatcher.match(uri);
switch(match){
case PETS:
return insertPet(uri,contentvalues);
default:
throw new IllegalArgumentException("Insertion is not supported for " + uri);
}
}
private Uri insertPet(Uri uri,ContentValues values){
SQLiteDatabase database = nDbHelper.getWritableDatabase();
long id = database.insert(PetEntry.TABLE_NAME, null, values);
if (id == -1) {
Log.e(LOG_TAG, "Failed to insert row for " + uri);
return null;
}
return ContentUris.withAppendedId(uri, id);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return 0;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
return 0;
}
}
这是清单文件的提供程序部分:-
<provider android:name=".data.PetProvider"
android:authorities="com.work.pets"
android:exported="false"/>
您的软件包错了。密码没有说谎。。。这是不存在的
com.work.pets.data.PetProvider
data.PetProvider
是否
固定
包数据
要使用应用程序包可以在调试模式下尝试吗?如果您处于此模式,则可以逐步找到解决方案。你能检查一下petprovider类的可访问性和包名吗?需要更多的说明。我在同一个“包数据”中有其他类,如PetContract和PetDbHelper,它们正在工作,但我在中创建了这个新的PetProvider类后,它们就停止工作了。澄清什么com.work.pets
是应用程序的程序包名称。当您将.data
放入清单中时,它将第一个点替换为应用程序包,而应用程序包并不存在您的提供者类。我没说你的其他密码