易截截图软件、单文件、免安装、纯绿色、仅160KB

3.通过JNI加载java虚拟机

        前面已经分析了java命令加载java虚拟机的方法,即通过JNI和虚拟机交互。因此我们可以很容易的自己写相应的启动代码,实现在C++程序中执行java程序,调用java类的方法。
     要测试的Java类(Test.java)的代码是:
public class Test {
public Test(){
System.out.println("Test's constructor");
}
public void sayHello(){
System.out.println("Test object say : Hello!");
}
public static int add(int arg1,int arg2){
return arg1 + arg2;
}

public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}

 
   加载jvm的C++(StartJVM.cpp)代码如下:
/*
* startjvm.cpp
*
* Created on: 2010-1-28
* Author: Xiutao Zang
*/
#include <iostream>
#include <jni.h>
using namespace std;
int main()
{
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=.";
JavaVMInitArgs args;
memset(&args, 0, sizeof(args));
args.version = JNI_VERSION_1_2;
args.nOptions = 1;
args.options = options;
args.ignoreUnrecognized = JNI_FALSE;
JNIEnv *env = 0;
JavaVM *vm = 0;
jint result = JNI_CreateJavaVM(&vm, (void **)&env, &args);
if (result == JNI_OK)
{
cout << "create the jvm successfully!" << endl;
jclass mainClass = env->FindClass("Test");
if (mainClass != 0)
{
cout << "find the main class successfully!" << endl;
jclass stringClass = env->FindClass("java/lang/String");
enum
{
LENGTH = 2
};
const char *mainParams[LENGTH] = { "Hello ", "World!" };
jstring jstringTemp;
jobjectArray mainArgs = env->NewObjectArray(LENGTH, stringClass, 0);
for (int i = 0; i < LENGTH; i++)
{
jstringTemp = env->NewStringUTF(mainParams[i]);
env->SetObjectArrayElement(mainArgs, i, jstringTemp);
}
jmethodID mainID


相关文档:

FLASH安全沙箱服务器端程序代码(跨平台,C++/JAVA)

Main.cpp  (Win/*nix)
#include "FlexSecurityBox.h"
int main(int argc, char ** argv) {

char * address;
short port;
if (argc == 2)
{
address = "0.0.0.0";
port = atoi(argv[1]);
} else if (argc == 3)
{
address = argv[1];
port = atoi(argv[2]);
} else
{
printf("Y ......

java 模拟浏览器

public static void DownLoadPages(String urlStr, String outPath)
     {
         int chByte = 0;
         URL url = null;
         HttpURLConnection httpConn ......

希尔排序算法的JAVA实现

package Utils.Sort;
/**
*希尔排序,要求待排序的数组必须实现Comparable接口
*/
public class ShellSort implements SortStrategy
{
       private int[] increment;
       /**
       *利用希尔排序算法对数组ob ......

冒泡排序算法的JAVA实现

package Utils.Sort;
/**
*利用冒泡排序法对数组排序,数组中元素必须实现了Comparable接口。
*/
public class BubbleSort implements SortStrategy
{
       /**
       *对数组obj中的元素以冒泡排序算法进行排序
     ......

Java软件架构师所要需的东西

作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
一、Java编程入门类
对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号