【问题标题】:Guava conflict with Jboss 8 (Wildfly) and Java 8Guava 与 Jboss 8 (Wildfly) 和 Java 8 冲突
【发布时间】:2014-08-10 09:23:15
【问题描述】:

我正在将我的应用程序从 JBoss 7.1 上的 Java 7 迁移到 Java 8 和 Wildfly (Jboss 8.1)。

当我尝试启动 Wildfly 时出现错误,服务器已启动但我的应用程序未加载。查看 Caused By 我可以看到一个更具描述性的问题:

原因:org.jboss.weld.exceptions.DeploymentException: WELD-001408: 类型 Set with 的依赖关系不满足 限定符 @Default 在注入点 [BackedAnnotatedParameter] [BackedAnnotatedConstructor] @Inject 的参数 1 com.google.common.util.concurrent.ServiceManager(Set) 在 com.google.common.util.concurrent.ServiceManager.(ServiceManager.java:0)

这个ServiceManager 类属于Google Guava。我已经尝试过 Guava 17、16 和 15,但问题仍然存在。

更新:感谢 ColinD 的回答,我更新了问题以提供更多详细信息。

在我的 pom.xml 我有:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>17.0</version>
</dependency>

该错误与 Guava 15 有关。我查看了部署的应用程序目录,发现我的 lib 目录包含两个 guava jar:guava-17.0.jar 和 guava-15.0-cdi1.0.jar。

我删除了这个奇怪的 guava-15.0-cdi1.0 jar 文件,我的服务器启动了,尽管我的应用程序没有加载。我认为这与 Wildfly 依赖项和 CDI 有关。

有人知道如何在 Wildfly 上解决这个冲突吗?

【问题讨论】:

标签: java jboss guava wildfly


【解决方案1】:

是的,这听起来你正在包装 guava 15 左右。它肯定适用于番石榴 16。我知道这一点是因为我遇到了同样的问题。我能够通过用耳朵包装后来的番石榴版本来解决它。 可能是您声明了对 wildfly 的 guava 模块的依赖,而不是仅仅在您的部署中打包一个 guava 库?

【讨论】:

    【解决方案2】:

    ServiceManager 从 Guava 16.0 开始就没有 @Inject 或 @Singleton 了。无论哪种方式,您的类路径中似乎都有一个版本的 Guava

    【讨论】:

    • +1。感谢指出。我已经更新了我的问题以提供更多详细信息。
    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 2013-10-09
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多