在 Scala 中使用带有 java.nio.channels.ClosedChannelException 的 com.azure.storage.blob 包的基本 blob 下载失败
Posted
技术标签:
【中文标题】在 Scala 中使用带有 java.nio.channels.ClosedChannelException 的 com.azure.storage.blob 包的基本 blob 下载失败【英文标题】:Basic blob download fails using com.azure.storage.blob package with java.nio.channels.ClosedChannelException in Scala 【发布时间】:2022-01-07 14:28:41 【问题描述】:我试图在 Scala 中复制 Azure Storage Blob client library for Java - Version 12.14.2 文档中的一个简单示例,但我只能获得 java.nio.channels.ClosedChannelException
。
我已经仔细检查了目标 blob ACL,并确认目标存储帐户上的网络防火墙已关闭(无限制)。
这里是主要代码:
val configUrl = "https://<storage_account>.blob.core.windows.net/<container>/<path>/application.conf"
val cred = new AzureCliCredentialBuilder().build()
val blobClient = new BlobClientBuilder()
.endpoint(configUrl)
.credential(cred)
.buildClient();
val blockBlobClient = blobClient.getBlockBlobClient
val content = blockBlobClient.downloadContent
对downloadContent
的调用给了我这个例外:
Exception in thread "main" reactor.core.Exceptions$ReactiveException: java.nio.channels.ClosedChannelException
at reactor.core.Exceptions.propagate(Exceptions.java:392)
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:97)
at reactor.core.publisher.Mono.block(Mono.java:1706)
at com.azure.storage.common.implementation.StorageImplUtils.blockWithOptionalTimeout(StorageImplUtils.java:128)
at com.azure.storage.blob.specialized.BlobClientBase.downloadContent(BlobClientBase.java:658)
at com.....Main$.main(Main.scala:54)
我已尝试使用此处所示的 Azure CLI 凭据和存储帐户密钥凭据。我也尝试过使用BlobServiceClient
和BlobContainerClient
,但得到了同样的错误。
【问题讨论】:
【参考方案1】:在 Azure Java SDK 团队的帮助下,发现它是 Azure Java SDK 中的一个损坏的依赖项。在build.sbt
中添加依赖项覆盖为我修复了它:
dependencyOverrides += "io.netty" % "netty-all" % "4.1.70.Final"
【讨论】:
以上是关于在 Scala 中使用带有 java.nio.channels.ClosedChannelException 的 com.azure.storage.blob 包的基本 blob 下载失败的主要内容,如果未能解决你的问题,请参考以下文章
在 Scala 中使用带有 java.nio.channels.ClosedChannelException 的 com.azure.storage.blob 包的基本 blob 下载失败
使用 Apache Zeppelin 重新运行带有 -deprecation 的 Scala 代码