gpt4 book ai didi

java - CompletableFuture 中的类未正确加载

转载 作者:行者123 更新时间:2023-12-02 10:40:50 27 4
gpt4 key购买 nike

下面是我使用 CompletableFuture 编写的代码 -

CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {
printResult();
return "complete future!";
});

在上面的代码中,在 printResult 函数中,我使用一些 xerces 相关的类来进行一些身份验证,这给了我 SAX2 驱动程序类未找到错误!

但是,当我使用 Callable 编写相同的代码时,它工作正常 -

Callable<String> callableFuture = () -> { 
printResult();
return "callable!";
};

此外,printResult() 在 CompletableFuture 之外也能正常工作。只是想知道这里是否有人知道这里出了什么问题。感谢您的帮助!

编辑:我在日志中挖掘了一下,这是实际的错误消息 - {ForkJoinPool.commonPool-worker-2} | [---]|错误:找不到 SAX2 驱动程序类 org.apache.xerces.parsers.SAXParser

最佳答案

Callable只是一个接口(interface)(以及@FunctionalInterface),并且它不假设任何有关调用它的上下文的信息。

CompletableFuture::supplyAsync(Supplier<U> supplier)与它的文档不同:

Returns a new CompletableFuture that is asynchronously completed by a task running in the ForkJoinPool.commonPool() with the value obtained by calling the given Supplier.

因此,在您的情况下,您收到的错误(“SAX2 驱动程序未找到错误!”)可能是由以下事实引起的:当 printResult()正在从 CompletableFuture 执行,SAX2驱动尚未加载。

关于java - CompletableFuture 中的类未正确加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52927260/

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