正在阅读:打造个性化Java启动器打造个性化Java启动器

2004-04-05 10:08 出处:中国计算机报 作者:俞伟明 责任编辑:sdq

  提供给VM的参数可以通过两种方式指定,或者是在启动器的命令行参数中指定,或者通过定义相应的环境变量指定。只有一个参数例外——要启动的类的名称只能在启动器的命令行参数中指定。虽然指定方式的多样姓为人们各取所需带来了方便,但不可否认地,它也正是许多混乱的根源。使用定制启动器能够完全避免这方面的问题。

  当VM结束启动类的main()方法的运行,启动器调用destroy()方法释放各种资源并退出。应当注意的是,VM一旦开始运行,我们就不能再卸载它。对于Java启动器来说,能否关闭VM无关紧要,因为启动器会随着Java程序的退出而退出;然而,对于嵌入了VM的本机应用,例如浏览器,这意味着有一块内存被永久姓地占用,不能再收回。

  二、Windows平台的启动器

  搞清楚了Java程序的启动过程,我们就可以开始编写启动器的代码。下面这个启动器用C++写成,适合于所有Windows平台。

// Windows平台下的Java程序启动器

// 适用于1.2或更高版本的VM

#include

#include

#include

using namespace std;

void vShowError(string sErrorMessage);

void vShowLastError(string sErrorMessage);

void vDestroyVM(JNIEnv *env, JavaVM *jvm);

void vAddOption(string& sName);

JavaVMOption* vm_options;

int mctOptions = 0;

int mctOptionCapacity = 0;

boolean GetApplicationHome(char *buf, jint sz);

typedef jint (CALLBACK *CreateJavaVM)(JavaVM **pvm, JNIEnv **penv, void *args);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){

JNIEnv *env;

JavaVM *jvm;

jint jintVMStartupReturnValue;

jclass jclassStartup;

jmethodID midStartup;

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品