Java Maven依赖项在运行时选择了错误的类

Java Maven依赖项在运行时选择了错误的类,java,maven,jersey,Java,Maven,Jersey,我有一个带有Maven和Tomcat的Java Servlet项目,其中包含以下两个依赖项(以及许多其他依赖项): 对于每个servlet 我试图从azure serviceruntime中排除jersey core,但是servlet似乎根本没有加载。我还尝试添加javax.ws.rsapi作为直接依赖项,但这也不起作用。最无法解释的是,它确实可以在Windows上工作,但不能在Linux上工作。。。 我还尝试用maven shade重新定位类/包,但没有成功 如何告诉Java使用最新的应用程

我有一个带有Maven和Tomcat的Java Servlet项目,其中包含以下两个依赖项(以及许多其他依赖项):

对于每个servlet

我试图从
azure serviceruntime
中排除
jersey core
,但是servlet似乎根本没有加载。我还尝试添加
javax.ws.rsapi
作为直接依赖项,但这也不起作用。最无法解释的是,它确实可以在Windows上工作,但不能在Linux上工作。。。 我还尝试用maven shade重新定位类/包,但没有成功


如何告诉Java使用最新的
应用程序

我认为您最好的选择是将jersey core:1.13从azure serviceruntime依赖项中排除:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>2.25.1</version>
</dependency>
<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-serviceruntime</artifactId>
    <version>0.6.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.glassfish.jersey.core</groupId>
          <artifactId>jersey-core</artifactId>
        </exclusion>
      </exclusions>
</dependency>

org.glassfish.jersey.core
泽西服务器
2.25.1
com.microsoft.azure
azure服务运行时
0.6.0
org.glassfish.jersey.core
球衣核心

我终于让它工作了。我进一步研究了它在Windows而不是Linux上工作的事实,区别在于在Windows上我使用OracleJDK,在Linux上使用openJDK


所以我在Linux上使用OracleJDK进行我的项目,现在它可以工作了。

Azure使用com.sun.jersey中的jersey核心。但是我已经尝试过排除这个,然后servlet似乎没有加载(我再也不能通过HTTP访问它们了),但我真的不知道为什么。
java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>2.25.1</version>
</dependency>
<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-serviceruntime</artifactId>
    <version>0.6.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.glassfish.jersey.core</groupId>
          <artifactId>jersey-core</artifactId>
        </exclusion>
      </exclusions>
</dependency>