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

Odpovedet emailem