gpt4 book ai didi

java - Jersey HK2 依赖注入(inject)在更新到 v2.27 后不起作用

转载 作者:行者123 更新时间:2023-12-04 02:58:48 26 4
gpt4 key购买 nike

我有一个使用 Jersey v2.25.1 的项目。我使用 Jersey 内置的 HK2 注入(inject)来执行依赖注入(inject),一切正常。快进到现在,我决定更新到 Jersey v2.27。

当我运行我的项目时,出现以下异常:

java.lang.IllegalStateException: InjectionManagerFactory not found

谷歌搜索后,我发现我需要添加 jersey-hk2 依赖项。这样做使我得到以下异常:

org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=<MyClass>,parent=<MyClass>,qualifiers={},position=0,optional=false,self=false,unqualified=null,1044705957)

将我的所有依赖项恢复到 Jersey v2.25.1 后,一切正常。我需要做什么来修复这些错误,以便我可以使用 Jersey v2.27?

编辑:我不使用 Maven,所以我不能真正发布一个 pom.xml,但明天我将把一个 MVCE 与我拥有的确切依赖关系放在一起,以及一个依赖注入(inject)的基本示例。

最佳答案

通过 Paul Samsotha 回答在评论中:

Try to change your AbstractBinder import. There are two, a Jersey one and an HK2 one. Try to use the Jersey one.

基本上,我需要更改我从中实现的 AbstractBinder 类

org.glassfish.hk2.utilities.binding.AbstractBinder

org.glassfish.jersey.internal.inject.AbstractBinder

不同之处在于 Jersey 在 2.26 版中将 HK2 与其内部 DI 机制分离,因此,我需要使用直接来自 Jersey 而不是 HK2 的新 AbstractBinder 导入。

有一些 API 差异:例如,而不是 Factory<T> , bindFactory()需要 java.util.function.Supplier<T> .

关于java - Jersey HK2 依赖注入(inject)在更新到 v2.27 后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51217120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com