首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MSGraph3.0 Java ClientCredentials错误(java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError/netty/tcp/ProxyProvider$TypeSpec)

MSGraph3.0 Java ClientCredentials错误(java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError/netty/tcp/ProxyProvider$TypeSpec)
EN

Stack Overflow用户
提问于 2021-03-22 03:06:07
回答 2查看 4K关注 0票数 0

应用程序类型:使用客户端凭据流的应用程序.

我之前使用MicrosoftGraph2.10.0从Microsoft图形中获取数据。然而,使用最近的Microsoft-Graph3.0.0,我想更新这个项目。

按照升级身份验证的详细信息,我使用以下方法获得了使用ClientCredentials azure-identity的GraphServiceClient:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String proxyUrl = "xxxxx";
int proxyPort = 8080;

ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP,new InetSocketAddress(proxyUrl, proxyPort));
// proxyOptions.setCredentials(proxyUser, proxyPassword);

final ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
.clientId(this.clientId).clientSecret(this.clientSecret).tenantId(this.tenantId)
.httpClient(HttpClient.createDefault(new HttpClientOptions().setProxyOptions(proxyOptions))).build();

final TokenCredentialAuthProvider authProvider = new TokenCredentialAuthProvider(this.scopes, clientSecretCredential);

final GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(authProvider)
                .buildClient();

pom.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>       
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!-- exclude logback , add log4j2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

        <!-- Microsoft Graph -->
        <dependency>
            <groupId>com.microsoft.graph</groupId>
            <artifactId>microsoft-graph</artifactId>
            <version>3.0.0</version>
        </dependency>   

        <!-- For SMTP Email -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
            <scope>runtime</scope>
        </dependency>

        <!-- SQL -->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <scope>runtime</scope>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>   
    </dependencies>

注意:使用2.10.0,我使用JVM参数传递代理,但是使用3.0.0无法传递代理,因此最终使用了链接后面的链接

发出:在获取任何数据时接收下面的错误,在上面的代码中设置httpClient时会看到错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2021-03-22T16:04:18,295 ERROR [restartedMain] o.s.b.SpringApplication: Application run failed
java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: reactor/netty/tcp/ProxyProvider$TypeSpec
    at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.lambda$build$7(NettyAsyncHttpClientBuilder.java:142)
    at reactor.netty.http.client.HttpClient.tcpConfiguration(HttpClient.java:1343)
    at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.build(NettyAsyncHttpClientBuilder.java:122)
    at com.azure.core.http.netty.NettyAsyncHttpClientProvider.createInstance(NettyAsyncHttpClientProvider.java:32)
    at com.azure.core.implementation.http.HttpClientProviders.createInstance(HttpClientProviders.java:48)
    at com.azure.core.http.HttpClient.createDefault(HttpClient.java:50)
    at com.app.intune.config.GraphClient.getGraphServiceClient(GraphClient.java:48)
    at com.app.intune.util.UserUtil.getUsersWithRegisteredDevicesAndSave(UserUtil.java:140)
    at com.app.intune.IntuneApplication.run(IntuneApplication.java:61)
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:804)
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:788)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:333)
    at com.app.intune.IntuneApplication.main(IntuneApplication.java:56)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.NoClassDefFoundError: reactor/netty/tcp/ProxyProvider$TypeSpec
    ... 18 more
Caused by: java.lang.ClassNotFoundException: reactor.netty.tcp.ProxyProvider$TypeSpec
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 18 more

如能对以上事项提供任何帮助,将不胜感激。

更新1:似乎是管理okhttp3.version的Spring依赖项。将属性更新到下面之后,错误就被解决了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<properties>
    <java.version>1.8</java.version>
    <okhttp3.version>4.9.1</okhttp3.version>        
</properties>

然而,现在出现了新的错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java.lang.NoClassDefFoundError: reactor/netty/channel/BootstrapHandlers
    at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.lambda$build$4(NettyAsyncHttpClientBuilder.java:139)
    at reactor.netty.tcp.TcpClient.bootstrap(TcpClient.java:144)
    at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.lambda$build$7(NettyAsyncHttpClientBuilder.java:138)
    at reactor.netty.http.client.HttpClient.tcpConfiguration(HttpClient.java:1343)
    at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.build(NettyAsyncHttpClientBuilder.java:122)
    at com.app.intune.config.GraphClient.getGraphServiceClient(GraphClient.java:43)
    at com.app.intune.util.UserUtil.getUsersWithRegisteredDevicesAndSave(UserUtil.java:140)
    at com.app.intune.IntuneApplication.run(IntuneApplication.java:57)
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:804)
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:788)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:333)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1309)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1298)
    at com.app.intune.IntuneApplication.main(IntuneApplication.java:52)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.ClassNotFoundException: reactor.netty.channel.BootstrapHandlers
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 19 more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-24 04:50:49

对于任何面临这个问题的人,下面是一个解决方案:项目详细信息:

弹簧启动2.4.4

microsoft-图3.0.0

使用以下方法创建GraphClient:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
final ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
    .clientId(<clientId>)
    .clientSecret(<clientSecret>)
    .tenantId(<tenantId>)
    .httpClient(new NettyAsyncHttpClientBuilder().proxy(
        new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<proxyHost>", <proxyPort>))
        .setCredentials("<proxyUser>","<proxyPassword>"))
        .build())
    .build();
    
final TokenCredentialAuthProvider tokenCredentialAuthProvider = new TokenCredentialAuthProvider(this.scopes, clientSecretCredential);
    
final GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(tokenCredentialAuthProvider).buildClient();

您可能会收到其他错误,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Exception in thread "main" java.lang.NoClassDefFoundError: reactor/netty/channel/BootstrapHandlers
    at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.lambda$build$4(NettyAsyncHttpClientBuilder.java:139)
    at reactor.netty.tcp.TcpClient.bootstrap(TcpClient.java:187)
    at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.lambda$build$7(NettyAsyncHttpClientBuilder.java:138)
    at reactor.netty.http.client.HttpClient.tcpConfiguration(HttpClient.java:1466)
    at com.azure.core.http.netty.NettyAsyncHttpClientBuilder.build(NettyAsyncHttpClientBuilder.java:122)
    at com.app.graph_test.App.main(App.java:43)
Caused by: java.lang.ClassNotFoundException: reactor.netty.channel.BootstrapHandlers
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 6 more

上面的问题发生在microsoft图形: 3.0.0下面的依赖树中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
microsoft-graph : 3.0.0
 - microsoft-graph-core : 2.0.0     
 -   azure-identity :1.2.3
 -     azure-core-http-netty : 1.8.0
 -       reactor-netty : 0.9.15.RELEASE

Spring引导2.4.4管理依赖项,因此它包含以下版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reactor-core : 3.4.4  
reactor-netty : 1.0.5  

新版本的反应堆网络不适用于微软-图形3.0。因此,通过在pom.xml中添加下面的内容来手动覆盖它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>0.9.15.RELEASE</version>
</dependency>

发布这篇文章时,应该没有错误。

票数 1
EN

Stack Overflow用户

发布于 2022-09-05 02:24:47

我花了很长时间才找到这个问题的解决办法。我使用的是spring 2.2.x和5.33.0版本。我无法更新我的spring引导版本,因为这会在我的应用程序的其他组件中引起问题。最后,我使用GitHub链接:https://github.com/Azure/azure-sdk-for-java/issues/17986解决了这个问题。

我必须在pom的属性部分中添加以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<reactor-bom.version>2020.0.6</reactor-bom.version>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66744821

复制
相关文章
java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize at AccessLogToMySql.AccessLogSpark
编程那点事
2023/02/25
5250
java错误-java.lang.NoClassDefFoundError: org/aspectj/util/PartialOrder$PartialComparable
升级本地的aspectjweaver的版本。我们之前的是1.8.0,使用jdk8报错。升级aspectjweaver为1.8.13版本就好了。
挑战者
2019/02/26
1.5K0
java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
今天在使用动态代理时,遇到了如下问题,报错 java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice   下面是完整的报错信息: 一月 31, 2015 2:08:18 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.Class
用户1154259
2018/01/17
1.1K0
java.lang.NoClassDefFoundError: javax/el/ELManager
今天搭建一个ssm框架的项目,报了一个令我怀疑人生的错误: java.lang.NoClassDefFoundError: javax/el/ELManager 网上说出现这种错,大概有以下两个原因: 1.tomcat提供的el-api 和项目里面的el-api.jar冲突; 2.tomcat7中的el-api2.2有些版本太低; 除了以上两点,我还总结了以下六点 ...... 最后,我在maven把6.0版本的org.hibernate改成低版本的,如下: 1 <dependency> 2
朱季谦
2019/10/16
1.8K0
Sqoop 连接mysql 错误 java.lang.NoClassDefFoundError
原因在异常中已经很明显了:没有找到类 org.apache.commons.lang.StringUtils  也就是说Sqoop中没有这个类或者包含这个类的jar包。但是我查看lib目录下的jar包,是包含commons-lang3的。上网查到因为Sqoop版本大部分是支持2 的。
来自银河系的员程序
2022/02/11
1.8K0
Sqoop 连接mysql 错误 java.lang.NoClassDefFoundError
mybatis错误提示:java.lang.NoClassDefFoundError: org/apache/ibatis/reflection/ReflectorFactory
java.lang.NoClassDefFoundError: org/apache/ibatis/reflection/ReflectorFactory
凯哥Java
2022/12/15
1.2K0
java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError错误是在编译时有这个类,但是运行时找不到这个类。
向着百万年薪努力的小赵
2022/12/02
8260
java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/DeprecationHandler
因为我们本地安装的es的版本是6.6.x版本的 所以依赖也是这个版本,这个看起来没有什么问题,但是我们打开依赖
一写代码就开心
2022/05/09
1.1K0
java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/DeprecationHandler
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
下载了最新的JUnit版本,是4.13,结果尝试使用发现总是报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing这样的错误,
JavaEdge
2020/05/26
1.3K0
java.lang.NoClassDefFoundError: org/junit/platform/launcher/TestExecutionListener
全部指定版本即可 <dependency> <groupId>org.junit.jupitergroupId> <artifactId>junit-jupiter-engineartifactId> <version>5.7.1version> <scope>testscope> dependency> <dependency> <groupId>org.
JavaEdge
2021/12/07
3400
java.lang.NoClassDefFoundError: org/junit/platform/launcher/TestExecutionListener
全部指定版本即可 <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.7.1</version> <scope>test</scope> </dependency> <dependency> <gr
JavaEdge
2021/10/18
4300
java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/DeprecationHandler
java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/DeprecationHandler
MickyInvQ
2020/10/28
1.8K0
java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/DeprecationHandler
java.lang.NoClassDefFoundError原因
java开发中经常遇到java.lang.ClassNotfoundException异常,ClassNotfoundException异常一般就是编译时找不到类,Console台就会输出异常信息。一般情况下,我们都会rebuild或者clean一下工程,让项目重新编译一遍。
SmileNicky
2019/01/17
3.5K0
Caused by: java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory
项目原来使用mybaties, 在整合mybaties-plus时. 出现错误 java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory
时间静止不是简史
2022/04/02
3.8K0
Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$
java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$
红目香薰
2022/11/30
7490
Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$
Caused by: java.lang.NoClassDefFoundError: freemarker/cache/TemplateLoader
通过这句“Caused by: java.lang.NoClassDefFoundError: freemarker/cache/TemplateLoader”,可知缺少“freemarker-2.3.19.jar”
全栈程序员站长
2022/07/11
6900
【错误记录】Groovy 工程编译报错 ( java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream )
右键点击工程根目录 , 选择 " Open Module Settings " 选项 ,
韩曙亮
2023/03/30
6560
【错误记录】Groovy 工程编译报错 ( java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream )
Java_异常_03_ java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory
java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory
shirayner
2018/08/10
5060
java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap报错解决
commons-beanutils-1.9.2.jar commons-logging-1.1.1.jar
Arebirth
2019/09/24
1.6K0
Spring Cloud版本冲突(java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper)
修改springboot版本后,启动springboot项目项目报错: java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper
全栈程序员站长
2022/09/09
1.4K0
Spring Cloud版本冲突(java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper)

相似问题

如何解决错误: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: io/vertx/core/育成

11

获取错误java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError

12

频道:org/jboss/netty/java.lang.NoClassDefFoundError/ChannelFactory

16

io/netty/util/concurrent/RejectedExecutionHandlers :java.lang.NoClassDefFoundError

12

Android GoogleCast GoogleCast错误- java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文