gpt4 book ai didi

java - 如何在处理 Open Office 文档后停止 Java

转载 作者:行者123 更新时间:2023-11-30 07:43:35 25 4
gpt4 key购买 nike

我正在使用 Java 创建和编辑 Open Office 文档。然而修改文档后,Java并没有退出,仍然运行着很多线程,比如Thread[Pipe:CO>]、Thread[Pipe:CE>]和Thread[MessageDispatcher]。我希望能够关闭这些线程并允许 Java 在代码完成时关闭。

这是我打开和关闭文档的代码:

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();
}
}

提前致谢!

最佳答案

正如我在评论中指出的,在 https://wiki.openoffice.org/wiki/API/Samples/Java 的 BookmarkInsertion 示例中,代码以 System.exit(0); 结尾。

此外,所有变量都需要是静态的是否有原因?这似乎不允许它们被正确地摧毁。

关于java - 如何在处理 Open Office 文档后停止 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com