java.lang.NoClassDefFoundError:无法初始化类com.azure.identity.implementation.RegionalAuthority

问题描述 投票:0回答:1

来自测试背景,我对开发人员的库/类/方法领域是新手,所以请您耐心等待:)

背景: 我们正在编写负载测试脚本(使用 JMeter)。作为此项目的一部分,我们需要将测试登录凭据存储在 Azure 密钥保管库中,以便这些 PT 脚本可以在运行时从保管库读取这些凭据。为了实现这一点,我们使用 Groovy 语言在 JSR223 预处理器中编写了一段代码。但它抛出以下错误:

运行环境- JMeter:最新版本, Java版本:17, 操作系统:Windows

根据网络上的发现,尝试在 JMeter 库中添加以下 Jars,但没有成功。

  • Azure-common 1.8.0
  • Azure 核心 1.53.0
  • Azure 身份 1.13.3
  • Azure-security-keyvault-secrets 4.8.6
  • msal4j 1.13.3

如果需要更多信息,请告诉我。如果有人可以指导上述问题,我将不胜感激。

下面是JSR223预处理器中的Groovy代码和错误详细信息

 import com.azure.identity.DefaultAzureCredentialBuilder
 import com.azure.security.keyvault.secrets.SecretClientBuilder

 def SecretName = "mysecretname";
 def keyVaultName = "myVaultName";
 def keyVaultUri = "https://${keyVaultName}.vault.azure.net/";

 def credential = new DefaultAzureCredentialBuilder().build() --\>\*\* - Line of error\*\*
 def client = new   SecretClientBuilder().vaultUrl(keyVaultUri).credential(credential).buildclient()
 def secretvalue = client.getSecret(SecretName).getValue()
 vars.put("password",password)```

Error Message:as seen in JMeter log viewer

ERROR o.a.j.JMeter: Uncaught exception in thread Thread\[\]
**java.lang.NoClassDefFoundError: Could not initialize class com.azure.identity.implementation.RegionalAuthority
at com.azure.identity.implementation.IdentityClientOptions**.\<init\>  (IdentityClientOptions.java:99) \~\[azure-identity-1.13.3.jar:1.13.3\]
at com.azure.identity.CredentialBuilderBase.\<init\>(CredentialBuilderBase.java:47) \~\[azure-   identity-1.13.3.jar:1.13.3\]
at com.azure.identity.DefaultAzureCredentialBuilder.\<init\>(DefaultAzureCredentialBuilder.java:77) \~\[azure-identity-1.13.3.jar:1.13.3\]
.....
**Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.BootstrapMethodError: java.lang.SecurityException: class "com.azure.core.implementation.ReflectiveInvoker"'s signer information does not match signer information of other classes in the same package** \[in thread "Login-Logout 1-1"\]
at com.azure.core.util.ExpandableStringEnum.fromString(ExpandableStringEnum.java:70) \~\[azure-core-1.53.0.jar:1.53.0\]
at com.azure.identity.implementation.RegionalAuthority.fromString(RegionalAuthority.java:287) \~\[azure-identity-1.13.3.jar:1.13.3\]`
..
groovy jmeter azure-keyvault noclassdeffounderror azure-identity
1个回答
0
投票

看起来您正遭受某种形式的 Jar Hell 的困扰,即 Azure Identity 库 1.3 依赖于 msal4j 1.17.1,而您拥有 1.13.3

我建议使用像Apache Maven这样的构建工具来自动解析和下载您需要的库,并且它是可传递的依赖项

有关 JMeter 中 Groovy 脚本编写的更多信息,请查看 Apache Groovy:Groovy 的用途是什么? 文章

© www.soinside.com 2019 - 2024. All rights reserved.