OpenOffice是一款优秀的开源办公套件,由sun公司贡献给开源社区。如果在Eclipse下继承它,则相当于给Eclipse添加了办公套件的支持。为此,笔者进行了尝试,如下。
OpenOffice提供了若干Jar包,专门提供在Java里面嵌入OpenOffice和调用OpenOffice服务的方法。在其自带的例子中,有OfficeBean和OfficeDev可供参考。但是,如果把他们直接采用SWT_AWT嵌入时,会出现找不到officebean库的异常。经分析,原因在于officeben.jar中的LocalOfficeConnection文件加载officebean库时,采用了如下代码:
String aSharedLibName = getProgramPath() + java.io.File.separator + System.mapLibraryName(OFFICE_LIB_NAME);
System.load(aSharedLibName);
而getProgramPath()采用
File path = NativeLibraryLoader.getResource(this.getClass().getClassLoader(), aExec);
其中,aExec为soffice.exe文件,即OpenOffice的启动文件名称。NativeLibraryLoader.getResource采用 classloader.getResource(s) 加载资源。
问题就出现在最后的classloader.getResource(s)。在普通的Java程序中,只要在PATH路径里面设置了OpenOffice的路径,并且把OpenOffice的路径传递给classpath,则通过classloader.getResource(s)可以正确的找到soffice.exe,从而可以正确得到aSharedLibName的路径。但是在Eclipse下,无论怎样设置PATH和传递classpath都不能使Eclipse找到soffice,从而加载库错误。
找到问题的根源后,直接修改getProgramPath()就可以了。为了在客户机上不用安装OpenOffice,把OpenOffice安装之后的目录拷贝到插件目录下,然后采用如下代码获取插件的目录:
mProgramPath = Platform.getBundle("org.openoffice").getLocation()+"program"; if(mProgramPath.indexOf("@/")>0) {
mProgramPath=mProgramPath.substring(mProgramPath.indexOf("@/")+2);
}
这样就可以加载了。但是别忘记了在PATH中设置上述路径,因为officebean在加载其他组件时采用默认方式,必须在PATH中设置路径才能正确找到。这就要求制作安装程序,由安装程序把此路径写入PATH中。
声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!
时间:2007-05-10 21:11:02,点击:65824
【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!
相关评论
我要评论
评论内容
相关文章
推荐文章