Я использую Java для создания и редактирования документов Open Office. Однако после изменения документов Java не выходит и продолжает запускать много потоков, таких как Thread [Pipe: CO>], Thread [Pipe: CE>] и Thread [MessageDispatcher]. Я хотел бы иметь возможность закрыть эти потоки и позволить Java закрываться, когда код будет выполнен.Как остановить Java после обработки документов Open Office
Вот мой код для открытия и закрытия документов:
private static Object oDesktop;
private static XStorable xStorable;
private static XComponent xSpreadsheetComponent;
private static XComponentContext xContext;
private static XSpreadsheetDocument xSpreadsheetDocument;
private static XSpreadsheets xSpreadsheets;
public static void openDocument(String filename)
{
try
{
// Get the remote office component context
xContext = Bootstrap.bootstrap();
// Get the remote office service manager
XMultiComponentFactory xMCF = xContext.getServiceManager();
// Get the root frame (i.e. desktop) of openoffice framework.
oDesktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext);
// Desktop has 3 interfaces. The XComponentLoader interface provides ability to load components.
XComponentLoader xCompLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class,
oDesktop);
PropertyValue[] loadProps = new PropertyValue[0];
xSpreadsheetComponent = xCompLoader.loadComponentFromURL(getUpdatedPath(filename), "_blank", 0, loadProps);
xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xSpreadsheetComponent);
xSpreadsheetDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class,
xSpreadsheetComponent);
xSpreadsheets = xSpreadsheetDocument.getSheets();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void closeDocument()
{
try
{
XCloseable xCloseable = (XCloseable) UnoRuntime.queryInterface(XCloseable.class, xStorable);
if (xCloseable != null)
{
xCloseable.close(false);
}
else
{
XComponent xComp = (XComponent) UnoRuntime.queryInterface(XComponent.class, xStorable);
xComp.dispose();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
Заранее спасибо!
Это отдельная программа? – Rao
Я использую Eclipse для запуска кода, если это то, что вы просите :). –
Я имею в виду, есть ли у него основной метод? – Rao