我得到以下错误:
JNI在应用程序中检测到错误:调用JNI GetMethodID时出现挂起的异常java.lang.ClassNotFoundException:在路径:DexPathList[[zip文件“/system/framework/sample.jar”],NativeLibraryDirectories=[/vendor/lib,/system/lib]]上找不到类“package.name.class”
JNI DETECTED ERROR IN APPLICATION: JNI GetMethodID called with pending exception java.lang.ClassNotFoundException: Didn't find class "package.name.class" on path: DexPathList[[zip file "/system/framework/XposedBridge.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
26771-26918/package.name.class A/art: art/runtime/java_vm_ext.cc:410] at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
26771-26918/package.name.class A/art: art/runtime/java_vm_ext.cc:410] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:511)
26771-26918/package.name.class A/art: art/runtime/java_vm_ext.cc:410] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:469)
以下是关于该错误的更多信息:
`jmethodID MethodId;
JNIEnv * env;
int nStatus = gVM->GetEnv((void**)&env, JNI_VERSION_1_6);
int nResult = attachStatus(nStatus, &env);
LOG_HM("::attach status = %d::\n", nResult);
if (nResult == ATTACH_FAILED) {
LOG_HM("Attach failed");
return ;
}
jclass classClass = env->GetObjectClass(gTotalUsageClass);
auto classLoaderClass = env->FindClass("java/lang/ClassLoader");
auto getClassLoaderMethod = env->GetMethodID(classClass, "getClassLoader",
"()Ljava/lang/ClassLoader;");
gClassLoader = env->CallObjectMethod(gTotalUsageClass, getClassLoaderMethod);
gFindClassMethod = env->GetMethodID(classLoaderClass, "findClass",
"(Ljava/lang/String;)Ljava/lang/Class;");
jclass totalUsage = static_cast<jclass>(env->CallObjectMethod(gClassLoader, gFindClassMethod, env->NewStringUTF("com/a/a/TotalUsageInfo")));
TotalUsageInfo *info = NULL;
jobject jUsageInfo = NULL;
jlong noOfProc = 0;
jlong memTotal = 0;
jlong memFree = 0;
jlong cache = 0;
jlong buffer = 0;
jlong cpuUtil = 0;
//jclass totalUsage = env->FindClass("com/a/a/TotalUsageInfo");
if (totalUsage == NULL) {
LOG_HM("Class TotalUsageInfo not Found \n");
nResult = FAIL;
detachThread(nResult);
return;
}
else {
LOG_HM("Class TotalUsageInfo Found \n");
}
jmethodID constructor = env->GetMethodID(totalUsage, "<init>", "(JJJJJJ)V");
if (NULL == constructor) {
LOG_HM("JNIGetTotalUsageInfo::TotalUsageInfo constructor not found\n");
nResult = FAIL;
detachThread(nResult);
return ;
}`
为了调用getMethodid
,您需要将C++线程正确地连接到主Java线程。像这样:
bool attachThreadToJVM(JNIEnv **env)
{
bool ret = false;
if(globalJavaVm != NULL) {
JavaVMAttachArgs vmAttachArgs;
vmAttachArgs.version = JNI_VERSION_1_6;
vmAttachArgs.name = NULL;
vmAttachArgs.group = NULL;
jint attachRet = globalJavaVm->AttachCurrentThread(env, &vmAttachArgs);
if(attachRet == 0)
{
ret = true;
}
}
return ret;
}
此行得删除指向错误: 异常中的Package name是从其中复制代码的项目的包名。 但我的应用程序的包名是。 我在我的项目中搜索了。 以下是我的清单文件:
我正试着用我的android项目运行一个谷歌OCR Tesseract。我已经使用android ndk遵守了tesseract,在我尝试运行android项目后收到了这个错误。 我的环境如下 Android5.1.1 作为参考,我从这里列出的示例构建示例链接 提前感谢! 下面是我的logcat结果的一个片段:
我正在构建一个使用NDK和Java的android应用程序。应用程序在调试模式下运行良好。但当我试图构建release APK时。它开始崩溃。调试发布APK后,我发现
问题内容: 我正在尝试使用我的android项目运行Googles OCR Tesseract。我已经将tesseract与android- ndk配合使用,并在尝试运行android项目后收到此错误。 我的环境如下 Android 5.1.1 适用于Windows的android-ndk-r10e android-sdk-r22 供参考,我从此处列出的示例构建示例链接 提前致谢! 这是我的log
我不明白为什么我总是得到这个错误