将Java代码打包为exe文件

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  //重导向文件

  const char szStdoutFileName[] = “stdout.txt”;

  const char szStderrFileName[] = “stderr.txt”;

  //java程序的命令行参数

  int nParamCount = 2;

  const char *szParams[2] = …{“arg1″,”arg2”};

  //加载JVM。

  HINSTANCE jvmDll = LoadLibrary(szJvmPath);

  if (jvmDll == NULL)

  …{

  printf(“加载JVM动态库错误。%l”, ::GetLastError());

  return false;

  }

  //查找JNI_CreateJavaVM过程。

  JNICREATEPROC jvmCreateProc = (JNICREATEPROC)GetProcAddress(jvmDll, “JNI_CreateJavaVM”);

  if (jvmCreateProc == NULL)

  …{

  FreeLibrary(jvmDll);

  printf(“查找JNI_CreateJavaVM过程错误。%l”, ::GetLastError());

  return false;

  }

  //创建JVM。

  JNIEnv *env;

  JavaVM *jvm;

  jint r = (jvmCreateProc)(&jvm, (void **)&env, &vm_args);

  if (r < 0 || jvm == NULL || env == NULL)

  …{

  FreeLibrary(jvmDll);

  printf( “创建JVM发生错误。”);

  return false;

  }

  //重导向stdout, stderr到输出文件

  if (!setStream(env, szStdoutFileName, “setOut”))

  …{

  printf(“设置stdout输出文件失败”);

  return false;

  }

  if (!setStream(env, szStderrFileName, “setErr”))

  …{

  printf(“设置stderr输出文件失败”);

  return false;

  }

  //加载启动类。

  jclass serviceClass = env->FindClass(szStartClass);

  if (env->ExceptionCheck() == JNI_TRUE || serviceClass == NULL)

  …{

  env->ExceptionDescribe();

  env->ExceptionClear();

  FreeLibrary(jvmDll);

  printf(“加载启动类失败。”);

  return false;

  }

[1][2][3][4][5][6]

有时,明知错了,却欲罢不能,

将Java代码打包为exe文件

相关文章:

你感兴趣的文章:

标签云: