Missing Maven dependencies in Eclipse project

我们和 Maven 建立了一个解决依赖关系的项目。它通常工作得很好,但是现在我正试图在一台新的 PC 上编译和运行它,而且我在 Eclipse 中缺少依赖关系存在问题。

有趣的是,如果我在控制台或 Eclipse 中运行“ mvn package”,它工作得很好,甚至会产生包含所有必需的 jar 的 war。只有 Eclipse 抱怨“项目没有构建,因为它的构建路径不完整。找不到 org.slf4j 的类文件。伐木工。如果我将该项目与其他一些计算机进行比较(在这些计算机中,项目工作得很好) ,我会注意到在 Eclipse 的“ Maven 依赖项”列表中缺少了相当多的库。即使它们在打包的 war 中,也可以在存储库文件夹中找到它们。

因此,jar-s 是存在的,只是 Eclipse 不会将它们全部列在“ Maven 依赖项”下。我能做什么呢?

计算机在 Windows7上运行64位 java 和 eclipse。

468578 次浏览

问题解决了!

我不知道到底是什么解决了这个问题,但我在 Eclipse 中做了4件事:

  • Window-> Preferences: Maven-> Installations: Global sets-> open file and hardcode localRepository 窗口-> 首选项: Maven-> 安装: 全局设置-> 打开文件和硬编码的 localRepository
  • Project->Clean
  • 右键单击 project: Maven-> Update Dependency 右键单击 project: Maven-> 更新依赖项
  • 右键单击 project: Maven-> Update project configuration

I guess it was the Update dependencies since right after first two there were no change.

对于在其他项目中创建的依赖项,我有这个问题。下载的第三方依赖项在构建路径中显示良好,但是没有显示我创建的库。

在未正确构建的项目中,

  • Right-click on the project and choose Properties, and then Maven.

  • Uncheck the box labeled "Resolve dependencies from Workspace 项目

  • 点击应用,然后确定。

  • 再次右键单击项目并执行 Maven-> Update Snapshot (或更新依赖项)

当项目重新生成时,您的错误应该消失(如果启用了自动生成,则会自动消失)。

我对 Eclipse 也是新手,我也遇到过类似的问题,Eclipse 不能识别导入语句,即使所有迹象都表明依赖项已经成功下载。

You should check that your dependency file has actually been downloaded by going to the command line and typing

mvn dependency:tree

如果您在那里看到了您的软件包,但是 Eclipse 没有确认它,那么对我来说(有时)最有效的方法就是转到终端,cd 到项目文件夹中,然后输入

mvn eclipse:clean 那么 mvn eclipse:eclipse

最后在 Eclipse 中刷新项目

我不知道这为什么有用,有时候一次都没用,但是再来一次确实有用... ... 所以值得一试!

我的项目完全搞砸了,下面是我如何为 Eclipse 靛蓝 x64(J2EE 3.7.3)修复它的:

  1. Deleted my POM file (backedup of course).
  2. 项目背景菜单 > 玛文 > 禁用玛文自然
  3. 删除项目(但不删除磁盘上的内容)。
  4. 重新输入为 进口 > General > 现有工程项目
  5. 项目背景菜单 > 配置 > 转换到 Maven 项目..。
  6. 接受 Maven 向导的默认值。
  7. 用备份的 POM 覆盖 POM (现在您有了 Maven Dependencies folder)。
  8. Maven 更新/清理以采取良好措施。

希望这对某人有帮助。 :)

我也遇到过类似的问题,我通过运行 Maven-> 更新项目配置动作解决了它

如果在执行 Maven-> Update Project Configuration (或在 Juno 中是“ Update Configuration...”)之后出现“嵌套路径”错误,那么您的构建路径配置错误。

右键单击 project-> Build Path-> ConfigureBuild Path

确保只包含’/src’和该级别的目录。如果您有例如’/src’和’/src/main/resources’,这是不正确的。第二个资源(’/src/main/resources’)嵌套在第一个资源(’/src’)之下,这导致您无法导入资源,因为它阻止 eclipse 查看 maven 依赖项。

我的问题听起来很相似,所以我要加入讨论。我已经取消了将现有的 maven 项目导入 Eclipse 的计划,这导致不允许它更新,并且不能正确地完成工作空间构建。

What I had to do to resolve it was select Run As... -> Maven build... and under Goals I entered dependency:go-offline and ran that.

然后右键单击该项目并选择 Maven -> Update Project...并更新该特定项目。

这最终允许它创建源文件夹并完成导入。

这个问题有这么多不同的原因和可能的解决方案,真是太神奇了。我找到了另一个适合我的解决方案。

这不是一个解决方案,而是一个发现: 我可以在 Package Explorer 中看到 Maven Dependency 节点,这是 Java 透视图的默认节点,但是我可以在 Java EE 透视图中看到 没有,默认情况下使用 Project Explorer。这两个浏览器在快速浏览时看起来非常相似,因此您可能希望在两个浏览器中都看到 Maven 依赖项。

当我试图弄清楚这一点时,我并没有意识到这种差异,所以最终这对我来说并不是一个真正的问题。

整个项目在 eclipse 中看起来很奇怪,maven 依赖文件夹丢失了,它显示了一些未知类型,但是我能够在 maven 中成功构建它。修正我的问题是在项目构建路径的源路径中添加 gen 文件夹。

也许这和这个 Android/FBReaderJ/gen 已经存在,但不是源文件夹。请转换为源文件夹或重命名它很相似

我可以用 1) Right click (your maven project) -> maven -> maven install

安装成功后

2) Right click (your maven project) -> maven -> update project. And the whole error of maven got solved!

我试过这里发布的所有东西,不幸的是,对我来说都不管用。所以,尝试不同的组合,我想出了这一个,解决了我的问题。

1)在 Eclipse 项目的根目录下打开 。类路径文件。

2)在档案内加入以下项目:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>

然后,在 eclipse 重新构建项目(Project-> Clean-Build)。

我试过这里发布的所有东西,不幸的是,对我来说都不管用。所以,尝试不同的组合,我想出了这一个,解决了我的问题。

1)在 Eclipse 项目的根目录下打开 。类路径文件。

2)在档案内加入以下项目:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>

Then, rebuild your project at eclipse (Project->Clean-Build). 您现在可以在您的项目的 Java Build Path 中的 Library 选项卡上检查 Maven Dependency,包括: enter image description here

所以我差不多迟到了4到5年,但是我从回购协议中抽出来后遇到了这个问题,而且在我的案例中,这个帖子中的其他解决方案都没有用来消除这些警告/错误。

这对我很有效:

从 Eclipse 转到 Window-> Preferences-> Maven (expad)-> Error/Warnings。最后一个选项是“插件执行不包括在生命周期配置中”-使用下拉菜单选择这个选项,然后切换“ Ignore”,然后应用,然后确定。(在“需要更新 Maven 项目”提示符下输入 OK)。

更多信息:

这可能不一定“修复”潜在的问题,也可能不符合某些人的“最佳实践”,但是它应该删除/禁止在 Eclipse 中出现这些警告,并让您至少可以继续前进。具体来说,我使用的是 Eclipse Luna Service Release1(4.4.1) w/Spring Dashboard & Spring IDE Core (3.6.3)和安装的 m2e (1.5) ,运行在 Arch Linux 和 OpenJDK 1.7上。我将项目导入为现有的 maven 项目,并在警告现有警告/错误时选择 OK (以便稍后处理)。

Suppress/Remove "Plugin Execution not covered..." warnings Eclipse-Maven

(抱歉,我不是设计师,但为了清晰起见,我添加了图片。)

对我来说,在. project 文件中添加 buildCommand (org.eclipse.m2e.core.maven2Builder)和 Nature (org.eclipse.m2e.core.maven2Nature)就足够了,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>iText</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

我也做到了 enter image description here

以上的解决方案对我都不管用,所以这个答案适用于处于我这种情况的任何其他人。我最终自己找到了问题所在,并找到了一个不同的解决方案。Xml 文件包含一个依赖项管理标记,该标记包装了依赖项,M2Eclipse 不会在出现这个标记时添加 Maven Dependency 文件夹。因此,我删除了这个标记,然后执行了 Ualter Jr. 提供的解决方案,Eclipse 立即添加了缺失的文件夹!

我就是这么解决的

  • Window-> Preferences: Maven-> User Settings (单击结果窗口中的“ open file”,或者使用 Notepad 这样的外部文本编辑器编辑 Settings.xml) 确保 localRepository (在这个窗口中显示)是正确的。
  • 更正 setings.xml 之后,单击 Update Settings,它位于同一个 Preferences-> Maven-> User Settings 屏幕上。

现在重新构建,它将把最新的 JAR 安装在正确的位置。

对我来说,问题是 maven 无法找到位于 我的 MavenFolderconf中的 Setings.xml文件。

为了解决这个问题,我从 eclipse 中选择了 setings.xml 文件的正确位置:
Window-> Preferences-> Maven-> User Settings 窗口-> 首选项-> Maven-> 用户设置

最后,点击应用程序并更新项目

如果有人已经尝试了所有其他选项,而你仍然卡住了,试着右键单击项目文件夹,转到 Maven 选项,点击“添加依赖项”按钮。由于某些原因,Eclipse 在第一次尝试时没有从 Pom.xml手动更新依赖项。

screen shot of menu selection

我也遇到过类似的问题,在这篇文章中我尝试了所有的答案。我最接近解决这个问题是通过结合约瑟夫欲望和保罗克里斯的解决方案。在删除和重新导入项目之后,我添加了备份的 pom.xml 文件,直到删除 pom.xml 中的依赖项管理标记,依赖项文件夹奇迹般地出现在那里,才显示出任何内容。

However, it broke up the child POM's since they need the parent pom.xml dependency management to function, and as a result my MVN was not functioning properly on the project either from Eclipse or the command line, giving a broken pom.xml error.

如果全部失败,最后一个解决方案是手动导入。项目所需的 jar 文件。右键单击项目属性-> Java 构建路径-> 库和添加外部 Jar。

如果您的 MVN 在命令行中正常工作,并且您已经在项目上完成了一个成功的构建,那么您将在您的。M2/存储库文件夹。添加 pom.xml 的依赖项标记中提到的所有外部 jar,您将在 Eclipse 中看到一个引用的库部分,所有烦人的红色错误都消失了。

这不是最佳解决方案,但是它可以让您在 Eclipse 中工作而不会出现任何缺少依赖项的错误,并且还允许您从 Eclipse 和命令行构建 Maven 项目。

以下步骤对我的情况有效:

在 eclipse 上,右键单击所需的项目 Maven-> 禁用 Maven Nature

2 Right click again then go to 物业. Delete every evidence of external Maven dependency leaving only JRE System Library.

在项目上再右键单击一次,然后转到 < strong > Configure-> Convert to Maven Project

同样的问题也发生在我身上,这是因为由于回购问题,在下载 jar 时出现了一个错误,pom.xml中的红色标志表明了这一点。

I added another repository so the red flag in the pom.xml disappeared and Eclipse then loaded the pom again, resolved its issue and listed the maven dependencies in Project Explorer. it sounds simple and obvious to resolve visible issues, but since Eclipse was quite happy to run maven, and build successfully, it was not obvious that the red flag and repo issue were at the root of its unwillingness to parse the pom and list the maven dependencies

在 EclipseSTS 中,如果“ MavenDependency”消失了,您必须检查并修复 pom.xml。我这样做(两次) ,我解决了它。这不是一个依赖性问题,而是在我的 pom.xml中随机生成并移动的一个 String。

mvn eclipse:clean

然后从 Eclipse: “ Maven 更新项目”做的诀窍!

以下步骤对我的情况有效:

1在 eclipse 上,右键单击所需的项目 Maven-> Disable Maven Nature

2右键再次点击然后转到属性。删除所有外部 Maven 依赖的证据,只留下 JRE 系统库。

3在项目上再右键单击一次,然后转到 Configure-> Convert to Maven Project

我也是

更新到下面的.classspath 将每次工作。

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="WEB-INF/" kind="src" path="src/main/webapp"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

我的回答类似于@JerylCook: 在一个工作的 Maven 项目中找到另一个 .classpath文件,把你的坏文件编辑成好文件。关键是要加

<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>

con型和 src型的每个 <classpathentry>中。不要忘记把 <classpathentry .... />改成 <classpathentry ...>xxx</classpathentry>

最后,更新 maven 项目并在 maven 中重新安装/重建。

All above did not worked with me. 因为这个修复只是删除.m2下的存储库文件夹,然后从 eclipse 中执行 maven 更新。

这么多的答案。你看,可能有很多原因,为什么这不工作,正如预期的。 在我的例子中,我也没有意识到-Tag 在我的依赖项周围。 < em > facepalm

例如:

...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

这只定义了这个和所有子项目与所需版本的依赖关系!例如,它在 master-POM 中应该是这样的。要在当前项目中真正使用 lib,还需要添加如下依赖项:

...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>


<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>

现在它将提供这个当前项目的库。

我也遇到了这个问题。这让我困惑了好几个小时。我尝试了许多在这个主题中提出的解决方案。最后,我发现这是由于 Java 元素过滤器。

Java Element Filters.

Maven 依赖关系: 是什么在 Eclipse 中为我解决了这个问题? 我在“ pom”文件中添加了依赖项。我做了一个构建,但是在 Eclipse 中看不到 Maven Dependency。 下一步: 关闭项目。 然后重新启动了这个项目。 我可以看到 Maven 的依赖关系。

以下是我遵循的步骤。
1. 从 eclipse 中删除了 maven 项目。
2. 从我的源文件夹中删除了除 Src以外的所有文件(. seting/. classspath/target)。
3. 作为一个专家项目再次导入
4. build it again, you should be able to see maven dependencies.

下面的解决方案为我工作-
1-转到项目目录
2-运行 mvn eclipse: eclipse (希望在路径中添加 mvn)
3-运行 mvn clean install

在 Eclipse 中刷新项目并检查。

窗口-> 首选项-> Maven-> 安装-> 全局设置 C: Program Files (x86) apache-maven-(version) conf setings.xml

Mvn 依赖项: tree Mvn 依赖: 解决

once it points to the correct settings file, right click on project : update dependencies, 更新项目配置,一旦没有加载或代码仍然保持’n 错误,关闭/打开项目

我在波姆犯了一个错误。

  1. 在控制台上运行 mvneclipse: eclipsecommand 以检查 pom 是否可解析。
  2. 如果不能解析,则搜索错误。

我的问题是由于多模块项目。

  1. 从磁盘中删除项目
  2. 结帐项目从您的回购和导入为 maven 项目在 Eclipse 中
  3. 清洁安装

我将我的项目方面改为 java,并复制粘贴了一个工作的 maven 项目 。类路径内容到这个项目。这解决了我的问题。

在我创建了一个 maven 项目之后,我遇到了一个类似的问题,maven 依赖项文件夹没有出现在项目结构中。要解决这个问题,只需要在 pom 文件中添加任何依赖项,比如在下面的代码中,或者右键单击项目,然后进入 maven 并选择 add 依赖项,搜索任何依赖项,比如 junit添加这个,maven 依赖项现在应该出现在你的项目结构中。

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.9.RELEASE</version>
<scope>runtime</scope>
</dependency>
</dependencies>

Th 根本原因 of this issue is that, when you port a project to a new machine, you have to delete the ".project" file in the root of your project, and try to import that. This makes the import smooth and Maven dependencies are properly configured for me

注意: 您应该从 Git 版本控制中排除.project。

就我而言,我已经尝试了所有这些方法,但没有一个奏效。最可能的问题是您添加了多个依赖项,因此必须将它们包装在 <dependencies> </dependencies>标记中。希望能有帮助!

我和你有同样的问题,在尝试了所有的清理,更新和安装之后,仍然有丢失的工件。对我来说,问题是没有应用配置文件。检查一下你的。M2/setings.xml 并查找 <activeProfile>。返回到您的项目,在 properties-> Maven 下单击鼠标右键,然后输入 ActiveMaven 配置文件。所有失踪的艺术品都解决了。

我也面临着同样的问题,它通过使用以下方法得到了解决: 右键单击“项目-> 专家-> 更新项目-> 警队更新”。

You need to add the maven-compiler-plugin in your pom.


1. Add the maven compiler plugin to your pom.


<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>13</release>
</configuration>
</plugin>
</plugins>
</build>


2]Right click on the project -> Maven ->Update Project

我在 STS4中也遇到过类似的问题,以下是我如何解决的。

  • Build(mvn clean install) the project using command line.

  • Right click the project folder -> Maven -> Update Project.

enter image description hereJust right click over Project folder and under Maven > 更新项目 > Select your project > 好的. 它会自动将 pom.xml 下的所有依赖项下载到名为 Maven Dependency 的文件夹中。

您需要在 eclipse 中更改项目 Facets 和项目性质。 Right Click on project go to properties and you can find the above options. Refer below image. Project Natures

In my case, maven did not have the Global Settings set in eclipse. 这意味着用于解决依赖关系的 eclipse 的内部专家不知道要与哪个回购协议交谈。

您可以在 Window > Preferences > Maven > User Settings中找到它,然后将 Global Settings指向您的外部专家 settings.xml

然后,我删除破碎的项目并重新添加它们,Maven 依赖项库再次出现。

My problem solved by right click on project -> Maven -> Update project. Then the Maven Dependencies appear on the project explore.

  1. 在 Eclipse 项目的根目录下打开.classspath 文件。