簡體   English   中英

如何在jni文件夾中創建Java類? 可能嗎?

[英]How to create java class in jni folder? is it possible?

我想隱藏我的Java代碼。所以我在jni文件夾中創建了java類並試圖調用該類方法。但是我在c ++中找到類時卻遇到ClassNotFound異常,這可能嗎?。這是我的第一個ndk project.so我對此一無所知。請告訴我解決方法。

這是我的C ++代碼

#include <jni.h>
#include <string.h>
#include <iostream>
using namespace std;

extern "C" JNIEXPORT jstring JNICALL 
Java_com_example_sohamsaa_ndktest_MyNativeClass_startRecord(JNIEnv* env,jobject obj){

jclass cls2 = env->FindClass("jni/MyTest");//here i'm getting classnotfound exception  

if(cls2 == NULL) {
   cerr << "ERROR: class not found !";
}
else {                                 
   cout << "Class MyTest found" << endl;
   jmethodID mid = env->GetStaticMethodID(cls2, "mymain", "()V"); 
   if(mid == NULL)
       cerr << "ERROR: method void mymain() not found !" << endl;
   else {
       env->CallStaticVoidMethod(cls2, mid);                     
       cout << endl;
   }
}
return (*env).NewStringUTF("Hi siddharthan");
}

這是我的java課

public class MyTest {
   public static void mymain() {  
      System.out.println("Hello, World in java from mymain");
  }
}

從理論上講,可以將一個類放在JNI文件夾中。 但是,它不會達到您想要的結果:

  1. Android運行時(類加載器)無法找到該類,因此當您的應用嘗試加載它時,您將獲得運行時異常。
  2. 擁有安裝了您的應用程序的設備的人將可以找到該類。 它將存儲在文件系統中的某個位置。

基本上,它不會起作用。 如果希望用戶的設備能夠運行該代碼,則無法隱藏該代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM