首页 > 单独文章 > 正文

Eclipse下集成OpenOffice须注意的问题

时间:2007-05-10 21:11:02 作者:officeba 【认证】

    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中。


相关文章

同类最新