首页 > 解决方案 > Wildfly 忽略包含的库

问题描述

我在 WEB-INF/lib 文件夹中有所有库,但是在执行时,Wildfly 抱怨缺少方法:

2018-08-13 09:56:14,723 ERROR [stderr] (Thread-174) Exception in thread "Thread-174" java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator;
2018-08-13 09:56:14,723 ERROR [stderr] (Thread-174)     at org.reflections.Reflections.expandSuperTypes(Reflections.java:380)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at org.reflections.Reflections.<init>(Reflections.java:126)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at org.nd4j.linalg.api.ops.factory.DefaultOpFactory.<init>(DefaultOpFactory.java:71)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at java.lang.Class.newInstance(Class.java:442)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at org.nd4j.linalg.factory.Nd4j.initWithBackend(Nd4j.java:6192)
2018-08-13 09:56:14,724 ERROR [stderr] (Thread-174)     at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:6087)
2018-08-13 09:56:14,725 ERROR [stderr] (Thread-174)     at org.nd4j.linalg.factory.Nd4j.<clinit>(Nd4j.java:201)

我在运行时检查了类路径条目,结果发现 Guava 20.0.0 丢失了。但是,Guava 库包含在 lib 文件夹中,并且还指定为 Maven 依赖项。

对我不知道的库有什么特殊处理吗?谢谢!

标签: javamavenwildfly

解决方案


您必须在您的 WEB-INF 文件夹中包含一个特殊的 JBoss 文件(“jboss-deployment-structure.xml”),列出您想要忽略的所有模块(它们是 Wildfly 的默认 JEE 堆栈的一部分),以便您的 webapp 中的 guava jar 优先于 WF (%JBOSS_HOME/modules/system/layers/base/com/google/guava/main) 之一

例子:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <exclusions>                
            <module name="com.google.guava"/>           
        </exclusions>   
    </deployment>
</jboss-deployment-structure>

推荐阅读