1

我试图在网上搜索我面临的问题,但也许我没有向谷歌询问正确的问题,所以我在这里。

我正在为我的多模块项目使用 IntelliJ IDEA。对于我的一个模块,其中一个类文件正在使用静态导入 -

import static javax.ws.rs.core.Response.Status.Family.familyOf;

作为一个大项目,从内部 repo 下载了很多依赖项,但由于某种原因 IntelliJ 拒绝使用依赖项“javax.ws.rs-api-2.0”,而是使用“jersey-core-1.8”。因此,它会引发编译错误,提示找不到符号“familyof”。

我从两个依赖项中查看了 Response.java,发现 jersey 依赖项没有 familyof 方法,而 javax.ws.rs-api-2.0 有它,但 IntelliJ 不使用此依赖项。我该如何解决这个问题。我团队中的大多数开发人员都在使用 Eclipse,他们没有这个问题。我正在尝试习惯 IntelliJ IDE,但似乎无法摆脱这种情况。非常感谢这方面的任何帮助。

PS - 这个问题在 Eclipse IDE 中不会发生。

4

3 回答 3

1

我可以按照以下提到的步骤解决此问题 -

  1. 转到“打开模块设置”Command+向下箭头键
  2. 选择依赖项选项卡
  3. 在列表中搜索以上两个依赖
  4. 向上移动“javax.ws.rs-api-2.0”依赖项以确保此依赖项高于“jersey-core-1.8”依赖项。

我不认为这是一个永久的解决方案,但它似乎有效。如果对 Java/Mave/IntelliJ 有深入了解的人可以回答这个问题,那就太好了!

于 2016-07-23T18:59:49.907 回答
1

每次使用 Maven 时,您都可以通过在 pom.xml 中改组依赖项来获得正确的结果,并确保在依赖项列表中首先声明要优先考虑的依赖项。是的,在 pom.xml 中声明依赖项的顺序很重要!

那么,如果你们都使用相同的 Maven 版本,你应该得到一致的结果。

于 2016-09-08T16:55:43.723 回答
1

Maven 如何在同一个依赖的两个版本之间进行选择?

正如这里所解释的,Maven 选择第一个遇到的依赖项,这就是为什么当您更改 pom.xml 中依赖项的顺序时它会起作用的原因。

如何查找 Maven 依赖项冲突?

在终端中,在 pom 文件夹中:

mvn dependency:tree -Dverbose | grep "conflict"

将为您提供项目中所有冲突的依赖项。

使用 Eclipse IDE,单击 pom 和Dependency hierarchy选项卡。然后,用依赖项填充过滤器字段。在左侧,您将看到冲突(如 with mvn dependendy:tree,过滤结果),在右侧,选择的依赖项。

使用 IntelliJ,IntelliJ的文档可以为您提供帮助。有一个图表视图可以找到冲突。

如何解决 Maven 依赖冲突?

  1. 在 pom 中添加dependencyManagement标签告诉 Maven 你想要哪个依赖

例子 :

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.7</version>
        </dependency>
    <dependencies>
</dependencyManagement>
  1. 改变pom中依赖的顺序
  2. 添加依赖项的排除

例子 :

    <dependency>
        <groupId>com.my.groupid</groupId>
        <artifactId>my-artifact-id</artifactId>
        <version>1.2.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

为什么 IntelliJ 和 Eclipse 之间有区别?

请阅读IntelliJ 的文档以轻松配置项目依赖项。

于 2020-05-14T10:39:06.587 回答