//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_CreateJav
aVM");
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("
加载启动类失败。
");