java - 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 依赖项。
对我不知道的库有什么特殊处理吗?谢谢!
解决方案
您必须在您的 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>
推荐阅读
- google-apps-script - 如何从 Apps Scripts 中的文件 url 获取文件名
- log4j - log4j2 实现文件夹文件所有者和权限
- html - 字体真棒图标上出现意外的白色背景
- rsocket - 是否可以使用 RSockets 进行广播?
- java - 如何为每个套件创建单独的 testng-failed.xml 而不会覆盖?
- python - numpy索引到4维数组
- ios - CocoaPods 找不到 pod“CordovaPlugins”的兼容版本
- javascript - 将鼠标悬停在链接上时更改父 div 的 css
- tcl - 如何使用单行 TCL 命令从列表中复制文件?
- azure - 如何通过 Azure 门户将 Iptag 附加到公共 IP