我们有一个用 maven 建立的项目来解决依赖关系。它通常工作正常,但现在我试图在新 PC 上编译和运行它,我遇到了 Eclipse 中缺少依赖项的问题。
有趣的是,如果我在控制台或 Eclipse 中运行“mvn package”,它可以正常工作,甚至会产生包含所有必要 jar 的战争。只有 Eclipse 抱怨“项目没有构建,因为它的构建路径不完整。找不到 org.slf4j.Logger 的类文件......”。如果我将该项目与其他一些计算机(项目运行良好)进行比较,我注意到在 Eclipse 中的“Maven 依赖项”列表下缺少很多库。即使它们在打包的战争中,也可以在存储库文件夹下找到它们。
所以,jar-s 在那里只是 Eclipse 不会在“Maven 依赖项”下列出它们。我能做些什么?
计算机在带有 64 位 java 和 eclipse 的 Windows 7 上运行。
好吧,我尝试了这里发布的所有内容,不幸的是在我的情况下没有任何效果。所以,尝试不同的组合,我想出了这个解决了我的问题的组合。
1) 在 Eclipse 项目的根目录下打开 .classpath 文件。
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>
https://i.stack.imgur.com/30PAM.png
问题解决了!
我不知道究竟是什么解决了它,但我在 Eclipse 中做了 4 件事:
Window->Preferences: Maven->Installations: Global settings -> open file and hardcoded localRepository
项目->清洁
右键单击项目:Maven->更新依赖项
右键项目:Maven->更新项目配置
我猜这是更新依赖项,因为在前两个之后没有任何变化。
我也是 Eclipse 的新手,我遇到过类似的问题,即 Eclipse 无法识别导入语句,即使所有迹象都表明依赖项已成功下载。
您应该通过转到命令行并键入来检查您的依赖文件是否已实际下载
mvn dependency:tree
如果你在那里看到你的包,但是 Eclipse 不承认它,对我有用的东西(有时)是去终端, cd 进入项目文件夹,然后输入
mvn eclipse:clean
然后 mvn eclipse:eclipse
最后在eclipse中刷新项目
我不知道为什么会这样,有时它一次不起作用,然后再做一次就起作用了……值得一试!
对于在其他项目中创建的依赖项,我遇到了这个问题。下载的第三方依赖项在构建路径中显示良好,但不是我创建的库。
SOLUTION:
在未正确构建的项目中,
右键单击项目并选择属性,然后选择 Maven。
取消选中标有“解决工作区项目中的依赖项”的框
点击应用,然后确定。
再次右键单击您的项目并执行 Maven->Update Snapshots (or Update Dependencies)
当您的项目重新构建时,您的错误应该会消失(如果您启用了自动构建,则会自动消失)。
我的项目刚刚搞砸了。这是我为 Eclipse Indigo x64 (J2EE 3.7.3) 修复它的方法:
删除了我的 POM 文件(当然是备份的)。项目上下文菜单 > Maven > 禁用 Maven 自然。删除了项目(但不是磁盘上的内容)。重新导入为“导入”>“常规”>“现有项目”。项目上下文菜单 > 配置 > 转换为 Maven 项目...。接受来自 Maven 向导的默认设置。用您备份的 POM 覆盖 POM。 (现在你有了 Maven Dependencies 文件夹)。 Maven 更新/清理以取得良好的效果。
希望对某人有所帮助。 :)
mvn eclipse:eclipse
之外,我尝试的任何操作都不会将 Maven 依赖项添加到我的项目中。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>antlr.tuto.calco</groupId> <artifactId>CalculatriceAntlr</artifactId> <version>0.0.1-SNAPSHOT</version> </project>
好吧,我尝试了这里发布的所有内容,不幸的是在我的情况下没有任何效果。所以,尝试不同的组合,我想出了这个解决了我的问题的组合。
1) 在 Eclipse 项目的根目录下打开 .classpath 文件。
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)。
对我来说,问题是 maven 找不到位于 myMavenFolder\conf 中的 settings.xml 文件。
我解决这个问题的方法是从 Eclipse 中选择 settings.xml 文件的正确位置:Window -> Preferences -> Maven -> User Settings
最后,点击应用并更新您的项目
以防万一有人尝试了所有其他选项而您仍然卡住,请尝试右键单击项目文件夹,转到 Maven 选项并单击“添加依赖项”按钮。出于某种原因,Eclipse 在第一次尝试时没有从 pom.xml 手动更新依赖项。
https://i.stack.imgur.com/D07sA.png
我有一个类似的问题。我通过运行 Maven->Update Project Configuration 操作解决了这个问题
所以我迟到了大约 4 或 5 年,但在从我们的回购中撤出后我遇到了这个问题,并且在我的情况下,这个线程中的其他解决方案都没有解决这些警告/错误。
这对我有用:
从 Eclipse 转到 Window -> Preferences -> Maven (expand) -> Errors/Warnings。最后一个选项为“生命周期配置未涵盖插件执行” - 使用此选项的下拉菜单并切换“忽略”,然后是应用,然后是确定。 (在“需要更新 Maven 项目”提示说 OK)。
更多信息:
这可能不一定“修复”潜在问题,并且可能不符合某些人的“最佳实践”,但是它应该删除/禁止这些警告出现在 Eclipse 中,并至少让您继续前进。具体来说 - 我正在使用 Eclipse Luna Service Release 1 (4.4.1) w/ Spring Dashboard & Spring IDE Core (3.6.3) 和 m2e (1.5) 安装,在 Arch Linux 和 OpenJDK 1.7 上运行。我将我的项目作为现有的 Maven 项目导入,并在警告现有警告/错误时选择“确定”(稍后处理它们)。
https://i.stack.imgur.com/8ixNW.png
(对不起,我不是设计师,但为了清楚起见添加了图片。)
对于我的情况,以下步骤有效:
1 在eclipse上,右键点击想要的项目Maven -> Disable Maven Nature
2 再次右键单击,然后转到属性。删除所有外部 Maven 依赖的证据,只留下 JRE 系统库。
3 在项目上再次右键单击一次,然后转到配置 -> 转换为 Maven 项目
上述解决方案都不适合我,所以这个答案适用于我这种情况的其他人。我最终自己发现了问题,并找到了不同的解决方案。 pom.xml 文件包含一个包装依赖项的dependencyManagement 标记,当它存在时,M2Eclipse 不会添加 Maven Dependencies 文件夹。所以,我删除了这个标签,然后执行了 Ualter Jr. 提供的解决方案,Eclipse 立即添加了丢失的文件夹!
这是我遵循的步骤。 1.从eclipse中删除了maven项目。 2. 从我的源文件夹中删除除 src 和 pom 之外的所有文件(.setting/.classpath/target)。 3.再次导入为maven项目 4.再次构建,应该可以看到maven依赖了。
这就是我解决它的方法
Window->Preferences: Maven->User Settings(在结果窗口中单击“打开文件”,或使用记事本等外部文本编辑器编辑 settings.xml)确保 localRepository(显示在此窗口中)正确。我的文件中有错字。
更正 settings.xml 后,单击同一 Preferences->Maven->User Settings 屏幕上的 Update Settings。
现在重建,它将在正确的位置安装最新的 JAR。
我的回答与@JerylCook 的回答类似:在一个工作中的 Maven 项目中找到另一个 .classpath
文件,将你的坏文件编辑为好的工作文件。关键是加
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
在 con
和 src
类型的每个 <classpathentry>
中。不要忘记将 <classpathentry .... />
更改为 <classpathentry ...>xxx</classpathentry>
。
最后,更新 maven 项目并在 maven 中重新安装/重建。
Pom 中出现错误时出现此错误。
在控制台上运行 mvn eclipse:eclipse 命令以检查 pom 是否可解析。如果不可解析搜索错误。
mvn eclipse:eclipse
后,所有依赖项都添加到了 eclipse 项目的类路径中,项目看起来很好。 ++
如果您在执行 Maven -> 更新项目配置(或在 Juno 中是“更新配置...”)后出现“嵌套路径”错误,那么您的构建路径配置错误。
右键项目->构建路径->配置构建路径
确保仅包含“/src”和该级别的目录。如果您有例如“/src”和“/src/main/resources”,这是不正确的。第二个资源('/src/main/resources')“嵌套”在第一个('/src')下,这导致您无法导入资源,因为它阻止了eclipse看到maven依赖项。
我的问题听起来很相似,所以我将添加到讨论中。我取消了将现有 maven 项目导入 Eclipse 的操作,这导致它不允许更新并且无法正确完成工作空间的构建。
我必须做的是选择 Run As... -> Maven build...
并在目标下输入 dependency:go-offline
并运行它。
然后我右键单击该项目并选择 Maven -> Update Project...
并更新该特定项目。
这最终允许它创建源文件夹并完成导入。
我可以通过 1)右键单击(您的 maven 项目)-> maven -> maven install 来解决错误
安装成功后
2)右键单击(您的maven项目)-> maven->更新项目。 maven的整个错误都得到了解决!
对我来说,在 .project 文件中添加一个 buildCommand (org.eclipse.m2e.core.maven2Builder) 和一个性质 (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>
https://i.stack.imgur.com/nvW4B.png
我有一个类似的问题,并尝试了这篇文章中的所有答案。我最接近解决这个问题的方法是结合 Joseph Lust 和 Paul Crease 解决方案。我在删除并重新导入项目后添加了备份的 pom.xml 文件,直到我删除了 pom.xml 中的依赖项管理标签并且神奇地依赖项文件夹就在那里,然后什么都没有出现。
但是,它破坏了子 POM,因为它们需要父 pom.xml 依赖项管理才能运行,因此我的 MVN 在 Eclipse 或命令行上的项目中无法正常运行,从而导致 pom.xml 错误。
如果一切都失败了,最后一个解决方案是手动导入项目所需的 .jar 文件。右键单击项目属性 -> Java 构建路径 -> 库并添加外部 Jar。
如果您的 MVN 在命令行中正常工作并且您已成功构建项目,您的 .m2/repository 文件夹中将拥有所需的所有存储库。添加 pom.xml 的依赖项标签中提到的所有外部 jar,您将在 Eclipse 中看到一个引用的库部分,所有讨厌的红色错误都消失了。
这不是最佳解决方案,但它可以让您在 Eclipse 中工作而不会出现任何缺少依赖项的错误,并且还允许您从 Eclipse 和命令行构建 Maven 项目。
同样的问题也发生在我身上,这是因为由于 repo 问题而下载 jar 时出错,由 pom.xml
中的红旗指示。
我添加了另一个存储库,因此 pom.xml
中的红旗消失了,然后 Eclipse 再次加载了 pom,解决了它的问题并在 Project Explorer 中列出了 maven 依赖项。解决可见问题听起来简单明了,但是由于 Eclipse 非常乐意运行 maven 并成功构建,因此红旗和 repo 问题并不是其不愿意解析 pom 和列出 maven 的根源。依赖关系
mvn eclipse:clean
然后从 Eclipse:“Maven 更新项目”就可以了!
每次都将 .classpath 更新到下面。
<?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>
Maven Dependencies:是什么在 Eclipse 中为我解决了这个问题?我在“pom”文件中添加了依赖项。我做了一个构建,但在 Eclipse 中看不到 Maven 依赖项。下一步:关闭项目。然后重新打开项目。我可以看到 Maven 依赖项。
我最近在创建一个maven项目后遇到了类似的问题,maven依赖文件夹没有出现在项目结构中。要解决这个问题,只需在pom文件中添加任何依赖项,例如在下面的代码中,或者右键单击项目然后转到 maven 并选择添加依赖项,搜索任何依赖项,例如 junit
add this,maven 依赖项现在应该出现在您的项目结构中。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.9.RELEASE</version>
<scope>runtime</scope>
</dependency>
</dependencies>
https://i.stack.imgur.com/suX2g.png
令人惊奇的是,这个问题有这么多不同的原因和可能的解决方案。我发现了另一种对我有用的解决方案。
好吧,与其说是解决方案,不如说是一个发现:我可以在 Package Explorer 中看到 Maven Dependencies 节点,这是 Java 透视图的默认设置,但在使用 Project Explorer 的 Java EE 透视图中却看不到它默认。这两个资源管理器乍一看非常相似,因此您可能希望在两者中看到 Maven 依赖项。
当我试图弄清楚这一点时,我并没有意识到这种差异,所以最终这对我来说并不是一个真正的问题。
整个项目在eclipse中看起来很奇怪,缺少maven依赖文件夹,它显示一些类型为未知,但我能够在maven中成功构建它。解决我的问题是将 gen 文件夹添加到项目构建路径上的源路径。
在 Eclipse STS 中,如果“Maven 依赖项”消失,您必须检查并修复您的 pom.xml
。我做了这个(两次)并解决了它。这不是依赖问题,而是在我的 pom.xml
中生成并随机移动的字符串。
不定期副业成功案例分享