日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java虚拟机调用jni_JNI攻略之十一――启动虚拟机调用java类

發布時間:2025/3/21 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java虚拟机调用jni_JNI攻略之十一――启动虚拟机调用java类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JNI攻略之十一――啟動虛擬機調用java類

江蘇無錫繆小東

一、一個簡單的java程序

下面是一個簡單的java程序!主要是供虛擬機直接調用的!我們可以編寫任意的java程序,然后在c中調用虛擬機執行它!通常我們會有此場景:某些本地系統可能不支持多線程,但你對java的多線程又比較精通,同時對c還是比較了解,此時我們就可以在c中調用虛擬機,執行改線程程序!更一般的:以前有一個用c寫的服務器程序,它可以介紹客戶的申請,當然這種申請在某一個時刻肯定是很多很多的,因此我們就想讓這些申請交由java的線程完成!此時就可以使用c調用虛擬機執行線程操作!對用戶隱藏了內部調用虛擬機執行線程的細節!

//示例程序Prog.java

public class Prog {

public static void main(String[] args) {

System.out.println("Hello World " + args[0]);

}

}

二、調用虛擬機執行java程序的代碼

下面是啟動虛擬機執行java程序的過程。(在此之前請先閱讀上面一篇)

/* invoke&exec.c */

#include

#include

int main() {

int res;

JavaVM *jvm;

JNIEnv *env;

JavaVMInitArgs vm_args;

JavaVMOption options[3];//以上是啟動虛擬機的一些參數

jclass cls , strcls;//將要被虛擬機執行的類和創建的String類

jmethodID mid ;//類的方法標識符

jstring jstr ;//輸入參數

jobjectArray args ;//主函數輸入參數

vm_args.version=JNI_VERSION_1_2;//這個字段必須設置為該值

/*設置初始化參數*/

options[0].optionString = "-Djava.compiler=NONE";

options[1].optionString = "-Djava.class.path=.";

options[2].optionString = "-verbose:jni";//用于跟蹤運行時的信息

/*版本號設置不能漏*/

vm_args.version = JNI_VERSION_1_2;

vm_args.nOptions = 3;

vm_args.options = options;

vm_args.ignoreUnrecognized = JNI_TRUE;

res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);

if (res < 0) {

fprintf(stderr, "Can't create Java VMn");

//exit(1);

}

//建立一個類及其方法,調用其方法的過程。和前面操作java的方法完全一樣哦!

cls = (*env)->FindClass(env, "Prog");

if (cls == NULL) {goto destroy;}

mid = (*env)->GetStaticMethodID(env, cls, "main","([Ljava/lang/String;)V");

if (mid == NULL) {goto destroy;}

jstr = (*env)->NewStringUTF(env, " This Method is called from C!");

if (jstr == NULL) {goto destroy;}

strcls = (*env)->FindClass(env, "java/lang/String");

args = (*env)->NewObjectArray(env, 1, strcls, jstr);

if (args == NULL) {goto destroy;}

(*env)->CallStaticVoidMethod(env, cls, mid, args);

destroy:

if ((*env)->ExceptionOccurred(env)) {

(*env)->ExceptionDescribe(env);

}

(*jvm)->DestroyJavaVM(jvm);

fprintf(stdout, "Java VM destory.n");

}

三、執行結果

以下是執行結果的主要部分!

[Dynamic-linking native method java.lang.Float.intBitsToFloat ... JNI]

[Dynamic-linking native method java.lang.Double.longBitsToDouble ... JNI]

[Dynamic-linking native method java.lang.Float.floatToIntBits ... JNI]

[Dynamic-linking native method java.lang.Double.doubleToLongBits ... JNI]

[Dynamic-linking native method java.lang.Object.registerNatives ... JNI]

[Registering JNI native method java.lang.Object.hashCode]

[Registering JNI native method java.lang.Object.wait]

……

[Registering JNI native method sun.misc.Unsafe.getShortVolatile]

[Registering JNI native method sun.misc.Unsafe.staticFieldOffset]

……

[Dynamic-linking native method java.io.FileOutputStream.writeBytes ... JNI]

Hello WorldThis Method is called from C!

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Java VM destory.

后面3個分別是C中的輸出、main方法的輸入――調用aaa XXXX > 11.txt和c中最后的輸出!

執行此exe程序,必須將Prog.class放到同一個目錄中!

總結

以上是生活随笔為你收集整理的Java虚拟机调用jni_JNI攻略之十一――启动虚拟机调用java类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆一二三区 | 婷婷射丁香| 在线艹| 人妻少妇精品视频一区二区三区 | 国产精品资源 | 欧美日韩国产中文字幕 | 日韩一区二区影视 | 日本一级片免费看 | 在线视频观看 | 天堂网ww| 无码一区二区波多野结衣播放搜索 | 国产精品色婷婷99久久精品 | 老牛影视av老牛影视av | av收藏小四郎最新地址 | 无码人妻一区二区三区精品视频 | 日本亚洲欧洲色 | 欧美中文字幕在线观看 | 男人插女人免费视频 | 最新国产精品视频 | 禁片天堂 | 久久午夜免费视频 | 欧美三极片 | 五月天亚洲色图 | 邻居少妇张开双腿让我爽一夜 | 精品国产一区二区三区久久久蜜臀 | 欧美四级在线观看 | 国产欧美在线一区 | 91偷拍富婆spa盗摄在线 | 国内精品卡一卡二卡三 | 99精品国产99久久久久久97 | 国产黄色av| 1区2区3区在线观看 久久久久久久久久久影院 成人网址在线观看 | 91嫩草在线 | 欧美激情91 | 日本三级免费网站 | 在线视频 中文字幕 | 亚洲AV无码阿娇国产精品 | 成人久久电影 | 日韩精品中文字幕在线 | 五月激情开心网 | 日日射天天操 | 欧美午夜一区 | xxxxx国产| 国产精品久久久久久 | 欧美日韩国产麻豆 | 涩涩网站在线看 | 久久综合热 | 国产69精品久久久久久久 | 五月天国产在线 | 99热最新在线 | 午夜影院在线播放 | 久久久久人妻一区精品色 | 精品久久电影 | 中国女人一级片 | av优选在线观看 | 激情四射婷婷 | 性少妇videosexfre | 国产又粗又猛又爽又黄视频 | 一女被多男玩喷潮视频 | 精品亚洲天堂 | 玩日本老头很兴奋xxxx | 精品一区国产 | 色呦呦免费 | 国产精品久久久精品三级 | 毛片毛片毛片毛片毛片毛片毛片毛片 | 丰满大乳露双乳呻吟 | 国产欧美一区二区三区精品酒店 | 国产在线一卡二卡 | 亚洲一区二区三区无码久久 | 欧美精品在欧美一区二区少妇 | 蜜桃视频无码区在线观看 | 欧美亚洲韩国 | 国产丝袜自拍 | 福利一区二区视频 | 妞妞影视 | av免费成人 | 爱爱爱爱网站 | 日韩免费在线 | 欧美日韩成人一区二区三区 | 美女福利视频一区 | 久久久久久欧美 | 美女扒开屁股让男人捅 | 高清一区二区三区 | 欧美日韩网| 永久国产 | 日韩熟女精品一区二区三区 | a国产| 久久av在线播放 | 亚洲视频精品在线 | 日韩看片 | 91传媒网站| 韩国成人在线视频 | 天天亚洲| 亚洲色图25p| 精品国产鲁一鲁一区二区张丽 | 特级精品毛片免费观看 | 免费成人蒂法网站 | 在线观看日批视频 | 亚洲国产成人精品女人久久 |