Zdravím,
mám aplikaci, která se spojuje s OpenOffice.org pomocí tohoto triviálního
kódu:
public static XDesktop getDesktop() {
XDesktop xDesktop = null;
XMultiComponentFactory xMCF = null;
try {
XComponentContext xContext = null;
xContext = Bootstrap.bootstrap();
System.out.println(xContext.toString());
xMCF = xContext.getServiceManager();
if (xMCF != null) {
Object oDesktop =
xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext);
xDesktop = (XDesktop)
UnoRuntime.queryInterface(XDesktop.class, oDesktop);
} else System.out.println("Can't create a desktop. No
connection, no remote office servicemanager available!");
} catch (Exception e) {
e.printStackTrace(System.err);
}
return xDesktop;
}
(atd. xDesktop je pak použit, s tím není problém)
Všechno mi funguje, dokud spouštím program z IDE (Eclipse 3.1). Jakmile to
přeložím a zabalím do JARu, skončí pokus o vytvoření xDesktop chybou:
com.sun.star.comp.helper.BootstrapException: no office executable found!
at com.sun.star.comp.helper.Bootstrap.bootstrap(Bootstrap.java:253)
at cz.xzajic.ts.OOWriterFiller.getDesktop(Unknown Source) (atd...)
Určitě vím, že závislosti jsou v pořádku. Pokud stejný kód spustím uvnitř
IDE, projde, vně IDE selže. Nenapadá někoho, co s tím?
(Win XP SP2, JRE 1.05.06, OO.O 2.0)
Petr Zajíc