Maven Jetty 垃圾邮件警告 "scanned from multiple locations"

Maven Jetty spams warning "scanned from multiple locations"

我发现了一个类似的问题 here ,但它指向一个我没有使用的插件 (maven-failsafe-plugin),并且该解决方案所指的配置不适用于我.

问题是因为我已经从

更新了我的码头插件
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.9.v20160517</version>

<version>9.4.11.v20180605</version> ,它开始发送数百个垃圾邮件警告,例如

[WARNING] org.apache.axis2.description.java2wsdl.bytecode.ClassReader scanned from multiple locations: jar:file:///C:/Users/a0763323/.m2/repository/org/apache/axis2/axis2-kernel/1.4.1/axis2-kernel-1.4.1.jar!/org/apache/axis2/description/java2wsdl/bytecode/ClassReader.class, jar:file:///C:/Users/a0763323/.m2/repository/it/aon/WSInfocar/1.2/WSInfocar-1.2.jar!/org/apache/axis2/description/java2wsdl/bytecode/ClassReader.class
[WARNING] org.apache.axis2.description.java2wsdl.bytecode.MethodTable scanned from multiple locations: jar:file:///C:/Users/a0763323/.m2/repository/org/apache/axis2/axis2-kernel/1.4.1/axis2-kernel-1.4.1.jar!/org/apache/axis2/description/java2wsdl/bytecode/MethodTable.class, jar:file:///C:/Users/a0763323/.m2/repository/it/aon/WSInfocar/1.2/WSInfocar-1.2.jar!/org/apache/axis2/description/java2wsdl/bytecode/MethodTable.class
[WARNING] org.apache.axis2.description.java2wsdl.bytecode.ParamNameExtractor scanned from multiple locations: jar:file:///C:/Users/a0763323/.m2/repository/org/apache/axis2/axis2-kernel/1.4.1/axis2-kernel-1.4.1

我到处搜索,但我不明白这意味着什么或如何解决这个问题。

我正在使用 IntelliJ 和 maven 编译器插件

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>

谢谢

让我们分解一下...

[警告] org.apache.axis2.description.java2wsdl.bytecode.ClassReader 从多个位置扫描:

  • jar:file:///C:/Users/a0763323/.m2/repository/org/apache/axis2/axis2-kernel/1.4.1/axis2-kernel-1.4.1.jar!/org/apache/axis2/description/java2wsdl/bytecode/ClassReader.class,
  • jar:file:///C:/Users/a0763323/.m2/repository/it/aon/WSInfocar/1.2/WSInfocar-1.2.jar!/org/apache/axis2/description/java2wsdl/bytecode/ClassReader.class

您有来自 2 个不同 JAR 的 class org.apache.axis2.description.java2wsdl.bytecode.ClassReader(而且似乎有两个不同的版本!)

根据您的文件系统路径判断,您可能具有以下 Maven 依赖项...

<dependency>
  <groupId>org.apache.axis2</groupId>
  <artifactId>axis2-kernel</artifactId>
  <version>1.4.1</version>
</dependency>

<dependency>
  <groupId>it.aon.WSInfocar</groupId>
  <artifactId>WSInfocar</artifactId>
  <version>1.2</version>
</dependency>

在您的 classpath / classloader 上使用相同 class 的两个不同版本是极端不明智的(很容易使用第一个版本,然后传递给另一个无法理解或无法使用的版本的 class)

您需要手动决定应该使用哪一个。 您可能想问 WSInfocar 的开发人员,为什么他们也在自己的工件中捆绑轴。

我发现这个问题和回复最有帮助。我与 JDT Core 和 Java Eclipse 编译器发生冲突。我转到属性并单击 Java 编译器一次更改一件事并进行测试。从使用 JRE 1.8 更改为 JRE 11 运行 时间在我测试的所有内容中为我解决了这个问题。

我检查过: 启用项目特定设置 使用默认合规性设置 (1.8)

这里张贴了一条通知: 选择 1.8 合规性时,请务必安装并激活兼容的 JRE(目前为 11)。配置已安装的JRE或执行环境或更改构建路径。

同样,一次改变一件事然后测试。我特别选择了 1.8 JRE,因为我读到 Java 11 不提供 JRE。我还不清楚那个问题。

我整天都在找这个问题的解决方案,如果你想忽略jetty中的WARN日志,你可以试试这个:

--exec
-Dorg.eclipse.jetty.annotations.AnnotationParser.LEVEL=OFF

将这些代码附加到 start.ini jetty 文件中,然后重新启动 jetty。