我正在嘗試創建一個能夠訪問 Azure 存盤的 Spring Boot 應用程式。
build.gradle以下是迄今為止我嘗試宣告的一些依賴項...
implementation 'com.azure:azure-storage-blob: ' // Current Dependency
implementation 'com.azure.spring:azure-spring-boot-starter-storage: ' // Previous Dependency
兩者都讓我可以BlobServiceClient訪問我用來訪問 Azure Blob 容器的類。
在我的application.properties檔案中,我具有以下屬性:
#Storage settings
# Current Attempt
azure.connection=${STORAGE_ACCOUNT_CONNECTION}
# Previous Attempt
azure.storage.account-name=${STORAGE_ACCOUNT_NAME}
azure.storage.account-key=${STORAGE_ACCOUNT_KEY}
azure.storage.blob-endpoint=${STORAGE_ACCOUNT_ENDPOINT}
然后,我在呼叫的 Spring 服務類中使用這些屬性StorageService來管理BlobServiceClient. 這是我設定它的兩次嘗試:
1(當前)。
@Autowired
StorageService(@Value("${azure.connection}") String connection)
{
client = new BlobServiceClientBuilder().connectionString(connection).buildClient();
objectMapper = new ObjectMapper();
}
- (以前的)。
@Autowired
StorageService(@Value("${azure.storage.account-name}") String name,
@Value("${azure.storage.account-key}") String key,
@Value("${azure.storage.blob-endpoint}") String endpoint)
{
AzureNamedKeyCredential credential = new AzureNamedKeyCredential(name, key);
client = new BlobServiceClientBuilder().credential(credential).endpoint(endpoint).buildClient();
objectMapper = new ObjectMapper();
}
我什至嘗試同時使用 Java 11 和 Java 17。但是,每次我設法在 Intelli-J 中運行它時,都會出現此錯誤。
Caused by: java.lang.NoSuchFieldError: NOOP_CONFIGURER
at reactor.netty.ChannelPipelineConfigurer.emptyConfigurer(ChannelPipelineConfigurer.java:40)
at reactor.netty.transport.TransportConfig.<init>(TransportConfig.java:207)
at reactor.netty.transport.ClientTransportConfig.<init>(ClientTransportConfig.java:164)
at reactor.netty.http.client.HttpClientConfig.<init>(HttpClientConfig.java:327)
at reactor.netty.http.client.HttpClientConnect.<init>(HttpClientConnect.java:85)
at reactor.netty.http.client.HttpClient.create(HttpClient.java:393)
at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.build(NettyAsyncHttpClientBuilder.java:141)
at com.azure.core.http.netty.NettyAsyncHttpClientProvider.createInstance(NettyAsyncHttpClientProvider.java:19)
at com.azure.core.implementation.http.HttpClientProviders.createInstance(HttpClientProviders.java:67)
at com.azure.core.http.HttpClient.createDefault(HttpClient.java:50)
at com.azure.core.http.HttpClient.createDefault(HttpClient.java:40)
at com.azure.core.http.HttpPipelineBuilder.build(HttpPipelineBuilder.java:73)
at com.azure.storage.blob.implementation.util.BuilderHelper.buildPipeline(BuilderHelper.java:138)
at com.azure.storage.blob.BlobServiceClientBuilder.buildAsyncClient(BlobServiceClientBuilder.java:135)
at com.azure.storage.blob.BlobServiceClientBuilder.buildClient(BlobServiceClientBuilder.java:114)
at com.trecapps.users.services.StorageService.<init>(StorageService.java:40)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
... 49 common frames omitted
當我用谷歌搜索"NOOP_CONFIGURER"(帶引號)時,我得到了 2 個結果,所以這個錯誤似乎沒有得到很好的記錄。關于如何讓我的應用啟動的任何建議?
uj5u.com熱心網友回復:
請檢查以下幾點。
NoSuchField, 通常表示在鏈接目標類時,該欄位不存在。但是在編譯時,類應該有那個欄位,否則代碼無法編譯。
IE; 它表示應用程式嘗試訪問或修改物件的欄位,但該欄位不再存在。
- 如果類的定義發生了不兼容的更改,則在運行時可能會發生此錯誤。
如圖所示的例外發生在ChannelPipelineConfigurer中的空配置方法中,該方法回傳 NOOP_configurer 存在于包reactor.netty
reactor netty core下這似乎是由 reactor-netty jar 中的版本不匹配引起的
ChannelPipelineConfigurer.java
package reactor.netty;
import io.netty.channel.Channel;
import reactor.util.annotation.Nullable;
import java.net.SocketAddress;
import static reactor.netty.ReactorNetty.CompositeChannelPipelineConfigurer.compositeChannelPipelineConfigurer;
@FunctionalInterface
public interface ChannelPipelineConfigurer {
static ChannelPipelineConfigurer emptyConfigurer() {
return ReactorNetty.NOOP_CONFIGURER;
}
因此,請檢查是否是 reactor netty 核心發布版本不兼容的原因或發生了一個或多個版本沖突并嘗試升級到最新版本的發布 jar 并檢查是否存在任何不兼容的依賴項。
要處理/處理 NoSuchFieldError 錯誤,請嘗試清理所有現有的 .class 檔案并從頭開始編譯所有內容。以便驗證每個參考的類是否已編譯為其最新版本。
但是,如果在運行時仍然拋出錯誤,那么可能必須使用一個版本的庫進行編譯,但在運行時使用另一個版本。您必須驗證您的類路徑是否包含指定庫的正確版本。
- 反應式 Spring Boot - java.lang.NoSuchFieldError:DEFAULT_SHUTDOWN_QUIET_PERIOD - 代碼日志
- 彈簧安全-{noop}
uj5u.com熱心網友回復:
添加
implementation "io.projectreactor.netty:reactor-netty-core: "
implementation "io.projectreactor.netty:reactor-netty-http: "
到我的build.gradle檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469225.html
下一篇:四舍五入到串列中最接近的數字
