【问题标题】:How do I resolve java.lang.NoClassDefFoundError: during Azure Blob Storage initialization如何解决 java.lang.NoClassDefFoundError: 在 Azure Blob 存储初始化期间
【发布时间】:2022-11-16 22:05:03
【问题描述】:

我在尝试像这样初始化 Azure Blob 时得到这个java.lang.NoClassDefFoundError: Could not initialize class com.azure.sto rage.blob.implementation.util.ModelHelper

StorageSharedKeyCredential credential = new StorageSharedKeyCredential(ACCOUNT_NAME, ACCOUNT_KEY);
BlobServiceClient storageClient = new BlobServiceClientBuilder().endpoint(endpoint).credential(credential).buildClient();

如何解决这个问题?

2022-10-28 12:03:30,802 ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServl
et] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class com.azure.sto
rage.blob.implementation.util.ModelHelper] with root cause
java.lang.NoClassDefFoundError: Could not initialize class com.azure.storage.blob.implementation.util.ModelHelper
        at com.azure.storage.blob.BlobUrlParts.parse(BlobUrlParts.java:371) ~[azure-storage-blob-12.20.0.jar!/:12.20.0]
        at com.azure.storage.blob.BlobServiceClientBuilder.endpoint(BlobServiceClientBuilder.java:171) ~[azure-storage-blob-12.20.0.jar!/:12.20.0]

我的 pom.xml 有这些依赖

<!-- https://mvnrepository.com/artifact/com.azure/azure-storage-blob -->
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-storage-blob</artifactId>
            <version>12.20.0</version>
        </dependency>

        <!-- Needed to avoid java.lang.ClassNotFoundException-->
        <!-- https://mvnrepository.com/artifact/com.azure/azure-core -->
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-core</artifactId>
            <version>1.33.0</version>
        </dependency>

我也看到类似的失败,但有时会出现不同的错误消息

java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.cfg.MapperBuilder
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_111]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_111]
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) ~[data-pipeline-automation-1.0.jar:0.0.1-SNAPSHOT]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_111]
    at com.azure.core.implementation.jackson.ObjectMapperShim.createHeaderMapper(ObjectMapperShim.java:135) ~[azure-core-1.33.0.jar!/:1.33.0]
    at com.azure.core.util.serializer.JacksonAdapter.<init>(JacksonAdapter.java:80) ~[azure-core-1.33.0.jar!/:1.33.0]
    at com.azure.core.util.serializer.JacksonAdapter.<init>(JacksonAdapter.java:58) ~[azure-core-1.33.0.jar!/:1.33.0]
    at com.azure.core.util.serializer.JacksonAdapter$SerializerAdapterHolder.<clinit>(JacksonAdapter.java:112) ~[azure-core-1.33.0.jar!/:1.33.0]
    at com.azure.core.util.serializer.JacksonAdapter.createDefaultSerializerAdapter(JacksonAdapter.java:121) ~[azure-core-1.33.0.jar!/:1.33.0]
    at com.azure.storage.blob.implementation.util.ModelHelper.<clinit>(ModelHelper.java:61) ~[azure-storage-blob-12.20.0.jar!/:12.20.0]
    at com.azure.storage.blob.BlobUrlParts.parse(BlobUrlParts.java:371) ~[azure-storage-blob-12.20.0.jar!/:12.20.0]
    at com.azure.storage.blob.BlobServiceClientBuilder.endpoint(BlobServiceClientBuilder.java:171) ~[azure-storage-blob-12.20.0.jar!/:12.20.0]

【问题讨论】:

    标签: java azure-blob-storage


    【解决方案1】:
    • 在这里,能够使用blobserviceclient使用以下代码在存储中创建一个容器。
    DefaultAzureCredential k = new DefaultAzureCredentialBuilder().build();
    BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()  
            .endpoint("https://<storageaccount>.blob.core.windows.net/")  
            .credential(k)  
            .buildClient();
    

    依赖项:

    <!-- https://mvnrepository.com/artifact/com.azure/azure-storage-blob -->  
    <dependency>  
     <groupId>com.azure</groupId>  
     <artifactId>azure-storage-blob</artifactId>  
     <version>12.20.0</version>  
    </dependency>  
      
      
    <!-- https://mvnrepository.com/artifact/com.azure/azure-core -->  
    <dependency>  
     <groupId>com.azure</groupId>  
     <artifactId>azure-core</artifactId>  
     <version>1.33.0</version>  
    </dependency>  
      
      
    <!-- https://mvnrepository.com/artifact/com.azure/azure-identity -->  
    <dependency>  
     <groupId>com.azure</groupId>  
     <artifactId>azure-identity</artifactId>  
     <version>1.7.0-beta.2</version>  
     <scope>compile</scope>  
    </dependency>
    

    • 现在让我们来看看 NoClassDefFoundError 错误,当 JVM 调用一个类并且在运行时无法找到它时,您会收到此错误。

    • 也许 ModelHelperMapperBuilder 类/依赖项与其他人不在同一位置。您可以做的是卸载所有内容,然后重新安装所有内容。然后重新编译项目。

    Rollbar 在 NoClassDefFoundError 上引用这个 article

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2017-05-11
      • 2014-03-13
      • 2016-02-03
      • 1970-01-01
      相关资源
      最近更新 更多