Bug描述
在具有有效凭据的AzureOpenAiEmbeddingModel
示例上尝试执行embed()
或embedAll()
操作时,抛出SSL错误:
`Exception in thread "main" java.io.UncheckedIOException: javax.net.ssl.SSLException: failure when writing TLS control frames`
日志和堆栈跟踪
异常发生在线程 "main" java.io.UncheckedIOException: javax.net.ssl.SSLException: failure when writing TLS control frames at com.azure.core.http.netty.NettyAsyncHttpClient.sendSync(NettyAsyncHttpClient.java:201) at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:51) at com.azure.core.http.policy.HttpLoggingPolicy.processSync(HttpLoggingPolicy.java:175) at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53) at com.azure.core.http.implementation.http.policy.InstrumentationPolicy.processSync(InstrumentationPolicy.java:101) at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53) at com.azure.core.http.policy.KeyCredentialPolicy.processSync(KeyCredentialPolicy.java:115) at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53) at com.azure.core.http.policy.CookiePolicy.processSync(CookiePolicy.java:73) at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53) at com.azure.core.http.policy.AddDatePolicy.processSync(AddDatePolicy.java:50) at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53) at com.azure.core.http.policy.RetryPolicy.attemptSync(RetryPolicy.java:211) at com.azure.core.http.policy.RetryPolicy.attemptSync(RetryPolicy.java:224) at com.azure.core.http
在Kotlin协程中,出现了一个异常:
at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)
at my.org.MainKt.main(Main.kt)
Suppressed: java.io.UncheckedIOException: javax.net.ssl.SSLException: failure when writing TLS control frames
at com.azure.core.http.netty.NettyAsyncHttpClient.sendSync(NettyAsyncHttpClient.java:201)
at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:51)
at com.azure.core.http.policy.HttpLoggingPolicy.processSync(HttpLoggingPolicy.java:175)
at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53)
at com.azure.core.implementation.http.policy.InstrumentationPolicy.processSync(InstrumentationPolicy.java:101)
at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53)
at com.azure.core.http.policy.KeyCredentialPolicy.processSync(KeyCredentialPolicy.java:115)
at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53)
at com.azure.core.http.policy.CookiePolicy.processSync(CookiePolicy.java:73)
at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53)
at com.azure.core.http.policy.AddDatePolicy.processSync(AddDatePolicy.java:50)
at com.azure.core.http.HttpPipelineNextSyncPolicy.processSync(HttpPipelineNextSyncPolicy.java:53)
at com.azure.core.http.policy.RetryPolicy.attemptSync(RetryPolicy.java:211)
这个异常是由于在尝试写入TLS控制帧时发生了失败。具体原因是在发送同步请求时,NettyAsyncHttpClient
的sendSync
方法抛出了javax.net.ssl 这是一个Java堆栈跟踪,它显示了在Netty网络编程中发生的异常。具体来说,这个错误是由于找不到
io.netty.util.Recycler$EnhancedHandle`类导致的。这可能是因为缺少了相应的依赖库。为了解决这个问题,你需要确保你的项目中包含了Netty库的所有依赖。你可以检查项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)以确保所有必要的依赖都已添加。
这是一个与Azure相关的错误日志,具体来说是SSL握手失败的问题。在尝试建立TLS连接时,发生了一个异常,导致无法写入TLS控制帧。这可能是由于网络问题、证书问题或者客户端和服务器之间的协议不匹配等原因导致的。为了解决这个问题,你可以尝试以下方法:
- 检查你的网络连接是否正常。
- 确保你的客户端和服务器使用的TLS/SSL协议版本是兼容的。
- 如果你使用的是自签名证书,请确保客户端信任该证书。如果没有信任,你需要将证书添加到客户端的信任存储中。
- 如果问题仍然存在,你可以尝试更新你的Azure SDK或库,以获取最新的修复和改进。
这是一个Java堆栈跟踪,它显示了在执行Netty网络编程时发生的错误。具体来说,这个错误是由于找不到io.netty.util.Recycler$EnhancedHandle
类导致的。这可能是因为缺少了相应的依赖库。
要解决这个问题,你需要确保你的项目中包含了Netty库的所有依赖。你可以检查项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)以确保所有必要的依赖都已添加。对于Maven项目,你可以在pom.xml文件中添加以下依赖:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.72.Final</version>
</dependency>
对于Gradle项目,你可以在build.gradle文件中添加以下依赖:
implementation 'io.netty:netty-all:4.1.72.Final'
请注意,这里的版本号可能会随着时间推移而发生变化,因此建议查阅Netty官方文档以获取最新版本。
在处理SSL握手时发生了错误,导致TLS控制帧无法写入。这可能是由于证书问题或加密套件不匹配导致的。请检查您的证书和加密套件设置,确保它们是正确的。
根据提供的错误信息,可以看出问题出现在io.netty.util.Recycler$EnhancedHandle
类的加载上。具体原因是找不到该类导致的java.lang.NoClassDefFoundError
异常。
这个异常通常发生在以下情况下:
- 缺少相关的依赖库或JAR文件。
- 依赖库版本不兼容或存在冲突。
- 编译时和运行时的类路径不一致。
要解决这个问题,可以尝试以下几个步骤:
- 确保你的项目中包含了正确的依赖库或JAR文件。检查项目的构建配置文件(如Maven的pom.xml或Gradle的build.gradle)是否正确地声明了所需的依赖项,并且这些依赖项的版本与你使用的Netty库版本兼容。
- 如果你正在使用IDE(如IntelliJ IDEA或Eclipse),请确保你的项目配置正确,并且所有的依赖项都已正确地添加到类路径中。有时候IDE可能会自动管理依赖项,但有时也可能需要手动进行配置。
- 如果你在运行应用程序时使用了命令行参数来指定类路径,请确保这些参数正确地指向了包含所需依赖项的位置。
- 如果以上步骤都没有解决问题,你可以尝试清理并重新构建你的项目。这将确保所有依赖项都被正确地下载和打包到可执行文件中。
如果上述步骤都没有解决问题,可能需要进一步调查你的项目配置和环境设置,以确定导致该异常的具体原因。
原始堆栈跟踪:
在 io.netty.handler.ssl.SslHandler.setHandshakeFailureTransportFailure(SslHandler.java:1999) 处发生异常。
原因:java.lang.NoClassDefFoundError: io/netty/util/Recycler$EnhancedHandle
翻译后的文本:
在尝试使用 NettyAsyncHttpClient 进行异步操作时,发生了异常。异常发生在 NettyAsyncHttpClient.java 文件的第 160 行。异常原因是找不到类 io/netty/util/Recycler$EnhancedHandle。原始堆栈跟踪中还包含了其他信息,但这些信息与此翻译无关。
根据提供的错误信息,问题出在java.lang.ClassNotFoundException: io.netty.util.Recycler$EnhancedHandle
。这个异常表示找不到io.netty.util.Recycler$EnhancedHandle
类。
要解决这个问题,你可以尝试以下方法:
确保你的项目中包含了正确版本的Netty库。你可以检查项目的依赖关系,确保Netty库的版本与LangChain4j使用的版本一致。
如果问题仍然存在,尝试清理并重新构建项目。这可以确保所有依赖项都已正确下载和配置。
如果以上方法都无法解决问题,你可以考虑在LangChain4j的GitHub仓库中提交一个issue,详细描述你遇到的问题。这样,开发者可以帮助你诊断问题并提供解决方案。
3条答案
按热度按时间h7wcgrx31#
/cc @agoncal (azure), @jdubois (azure)
bgtovc5b2#
@LukeTarr 我刚刚创建了一个样本,试图复制你的bug( https://github.com/langchain4j/langchain4j-examples/pull/93/files )。在我这边运行正常。你能尝试这个样本并告诉我吗?
同时检查创建模型的shell脚本,也许有些差异:
q1qsirdb3#
抱歉回复晚了,是的,我设置了一个新的嵌入模型示例来尝试,但示例仍然出现相同的错误。如果这个对你有用,我开始认为可能是我的组织网络配置问题,而不是lanchain4j。这周我会进行一些调查,看看我能找出什么。如果是我这边网络的问题,我会解决它,否则我会回来报告这里。谢谢!