精华全集 冲广角币 获取广角币的更多方法
【名称】:启动虚拟机调用java类
【作者】:江苏 无锡 缪小东
【格式】:PDF
【页数】:3
【语言】:中文
【出版社】:
【出版日期】:
【摘要或目录】:
一、 一个简单的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 <stdio.h> #include <jni.h> 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";