【发布时间】:2019-01-20 08:54:48
【问题描述】:
我在 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 依赖项。
对我不知道的库有什么特殊处理吗?谢谢!
【问题讨论】:
-
我们可以看看你的 pom.xml 的相关部分吗?如果它是一个依赖项并且你在 pom.xml 中的
packaging是war它应该被包含进来。 -
@stdunbar 感谢您的回复。正如我所说,Guava-jar 文件存在于 WEB-INF/lib 文件夹中,但在开始部署时并没有被 Wildfly 加载到类路径中。
-
您的类路径中有多个版本的 Guava。重复的 JAR 来自 Weld 本身。您需要在 Weld 发行版中降级到相同版本并将其标记为已提供(不要捆绑它)或排除它developer.jboss.org/thread/196551