有些时候我们编写的程序可能会用到其它一些库,比如jai, j3d等,而在默认jre中并没有这些库。一种方法是在用户的客户端上安装这些库,但是还有另外一种简单的方法,那就是自带jre,把这些库全部放进jre的响应目录中。这样无论客户端安装什么版本的jre,是不是有全部的库,我们的应用程序总能够通过自己的jre运行。
其方法是在rcp目录中,自建一个目录,就叫<jre>,里面就放入集成的jre,把需要的库全部统统放进去就可以了。
原来,在eclipse.c中,有查找shipped vm的代码,eclipse.exe会先查找有没有自带的jvm,有的话就用它启动:
/* find the directory where the eclipse program is installed. */
programdir = getprogramdir();
...
/* if the user did not specify a vm to be used */
if (vmname == null)
{
/* determine which type of vm should be used. */
vmname = ((debug || needconsole) ? consolevm : defaultvm);
/* try to find the vm shipped with eclipse. */
shippedvm = malloc( (_tcslen( programdir ) + _tcslen( shippedvmdir ) + _tcslen( vmname ) + 10) * sizeof(_tchar) );
_stprintf( shippedvm, _t_eclipse("%s%s%s"), programdir, shippedvmdir, vmname );
javavm = findcommand( shippedvm );
/* format a message to indicate the default vm search path. */
vmsearchpath = malloc( (_tcslen( pathmsg ) + _tcslen( shippedvm ) + _tcslen( vmname ) + 10) * sizeof(_tchar) );
_stprintf( vmsearchpath, pathmsg, shippedvm, vmname );
free( shippedvm );
shippedvm = null;
}
eclipsewin.h
_tchar* consolevm = _t("java.exe");
_tchar* defaultvm = _t("javaw.exe");
_tchar* shippedvmdir = _t("jre//bin//");
这样就可以通过自带jre解决客户端库不完全的问题。我们的项目正是采用这种方式。
闽公网安备 35060202000074号