ChatGPT解决这个技术问题 Extra ChatGPT

Eclipse 项目中缺少 Maven 依赖项

我们有一个用 maven 建立的项目来解决依赖关系。它通常工作正常,但现在我试图在新 PC 上编译和运行它,我遇到了 Eclipse 中缺少依赖项的问题。

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

所以,jar-s 在那里只是 Eclipse 不会在“Maven 依赖项”下列出它们。我能做些什么?

计算机在带有 64 位 java 和 eclipse 的 Windows 7 上运行。

是否是 jira.codehaus.org/browse/MNG-2045 中的范围问题?
这不值得发布答案,但是对于将来阅读此内容的任何人,您似乎需要输入至少三个不带通配符的字符。例如,键入“t”或“to”不会显示任何结果,但“tom”会。信不信由你,在意识到这一点之前,我花了大约一个小时寻找不同的原因。

U
Ualter Jr.

好吧,我尝试了这里发布的所有内容,不幸的是在我的情况下没有任何效果。所以,尝试不同的组合,我想出了这个解决了我的问题的组合。

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


这是每个人都应该尝试的第一件事。使用记事本打开项目目录中的 .classpath 文件,添加提到的行并刷新项目。
这在其他一切都失败的地方奏效了。但是我必须为我创建的每个项目都这样做吗?为什么它不自动工作?真正的问题是什么?
唉,这在 m2e 1.6.2.20150902-002 中仍然被打破。在 Mac OS X / JDK 1.8 上使用全新的香草 Eclipse 安装进行测试。 Eclipse IDE for Java Developers 版本:Mars.2 Release (4.5.2) Build id: 20160218-0600 我想知道这个插件是否需要 Eclipse Java EE 才能正常工作?
这个答案应该是第一个。唯一有效的;-) thx
魔法!对于 Eclipse 4.4.2 仍然有效
S
Sean Patrick Floyd

问题解决了!

我不知道究竟是什么解决了它,但我在 Eclipse 中做了 4 件事:

Window->Preferences: Maven->Installations: Global settings -> open file and hardcoded localRepository

项目->清洁

右键单击项目:Maven->更新依赖项

右键项目:Maven->更新项目配置

我猜这是更新依赖项,因为在前两个之后没有任何变化。


我知道“项目->清洁”并且我已经尝试过,但一开始并没有帮助。
这是最后一点。更新项目配置将为您的项目添加一个“Maven Dependencies”库。
仅供参考,我首先必须右键单击我的项目,转到配置并“转换为 Maven 项目”。
扩展 Eduard Wirch 的答案,我还必须检查 Maven->Update Project... 窗口中的“强制更新快照/发布”框。我丢失的工件是快照,并且在不强制的情况下无法很好地更新。
我不得不将用户设置“settings.xml”更改为我的“.m2”目录下的那个。它以前在 Maven 安装目录下设置为 1。
s
seoservice.ch

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

您应该通过转到命令行并键入来检查您的依赖文件是否已实际下载

mvn dependency:tree

如果你在那里看到你的包,但是 Eclipse 不承认它,对我有用的东西(有时)是去终端, cd 进入项目文件夹,然后输入

mvn eclipse:clean 然后 mvn eclipse:eclipse

最后在eclipse中刷新项目

我不知道为什么会这样,有时它一次不起作用,然后再做一次就起作用了……值得一试!


通过向我展示我的 settings.xml 文件存在问题,这为我指明了正确的方向!谢谢你,@rogueleaderr!
是的,它对我的朋友有用,解决了她所有的问题和头痛。不幸的是没有为我工作。
它也对我有用,但有人可以解释幕后发生的事情吗?
为我工作。完美修复。
对我来说效果很好!
P
Priyantha

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

SOLUTION: 在未正确构建的项目中,

右键单击项目并选择属性,然后选择 Maven。

取消选中标有“解决工作区项目中的依赖项”的框

点击应用,然后确定。

再次右键单击您的项目并执行 Maven->Update Snapshots (or Update Dependencies)

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


谢谢,这解决了我的问题。似乎指向它是一个 Eclipse 错误。
嘿,没有 Maven->Update Snapshots(或 Update Dependencies)之类的东西。如果我右键单击,没有 Maven 选项?你所描述的位于哪里?我正在寻找,但在您点击应用后找不到描述
@DarioBB 这个答案已经有将近 5 年的历史了。我已经一年多没有在 Eclipse 中工作了。我不知道这个选项是否仍然可用。我可能不在最新版本中。
这个解决方案在 Eclipse neon 中对我有用。之后执行 Maven > 更新项目(而不是更新快照)。
J
Joseph Lust

我的项目刚刚搞砸了。这是我为 Eclipse Indigo x64 (J2EE 3.7.3) 修复它的方法:

删除了我的 POM 文件(当然是备份的)。项目上下文菜单 > Maven > 禁用 Maven 自然。删除了项目(但不是磁盘上的内容)。重新导入为“导入”>“常规”>“现有项目”。项目上下文菜单 > 配置 > 转换为 Maven 项目...。接受来自 Maven 向导的默认设置。用您备份的 POM 覆盖 POM。 (现在你有了 Maven Dependencies 文件夹)。 Maven 更新/清理以取得良好的效果。

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


这对我有帮助!我不知道出了什么问题,但我使用的是 64 位 Juno / Springsource 3,它总是无法正确导入我的 Maven 项目。如果我作为常规项目签出,重命名我的 POM,然后按照您的指示从第 5 步开始,它可以工作。否则,除了非常糟糕的命令行 mvn eclipse:eclipse 之外,我尝试的任何操作都不会将 Maven 依赖项添加到我的项目中。
我这样做了,但我仍然没有 Maven 依赖项文件夹。这是我的 pom.xml 文件,我认为这就是我遇到此问题的原因:<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>
我真的不知道问题出在哪里,但我已经按照上述步骤操作,并且工作得很好。它会导致错误,例如找不到类,找不到 xml dtd。但现在已经解决了。谢谢哥们。点赞。
U
Ualter Jr.

好吧,我尝试了这里发布的所有内容,不幸的是在我的情况下没有任何效果。所以,尝试不同的组合,我想出了这个解决了我的问题的组合。

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 依赖项。现在可见并添加到构建路径中。谢谢!
I
I. YOCK

对我来说,问题是 maven 找不到位于 myMavenFolder\conf 中的 settings.xml 文件。

我解决这个问题的方法是从 Eclipse 中选择 settings.xml 文件的正确位置:Window -> Preferences -> Maven -> User Settings

最后,点击应用并更新您的项目


a
ale

以防万一有人尝试了所有其他选项而您仍然卡住,请尝试右键单击项目文件夹,转到 Maven 选项并单击“添加依赖项”按钮。出于某种原因,Eclipse 在第一次尝试时没有从 pom.xml 手动更新依赖项。

https://i.stack.imgur.com/D07sA.png


C
Chris Gerken

我有一个类似的问题。我通过运行 Maven->Update Project Configuration 操作解决了这个问题


B
Brandon K

所以我迟到了大约 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

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


R
Rafael Isquierdo

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

1 在eclipse上,右键点击想要的项目Maven -> Disable Maven Nature

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

3 在项目上再次右键单击一次,然后转到配置 -> 转换为 Maven 项目


P
Paul Crease

上述解决方案都不适合我,所以这个答案适用于我这种情况的其他人。我最终自己发现了问题,并找到了不同的解决方案。 pom.xml 文件包含一个包装依赖项的dependencyManagement 标记,当它存在时,M2Eclipse 不会添加 Maven Dependencies 文件夹。所以,我删除了这个标签,然后执行了 Ualter Jr. 提供的解决方案,Eclipse 立即添加了丢失的文件夹!


k
karuna nidhan

这是我遵循的步骤。 1.从eclipse中删除了maven项目。 2. 从我的源文件夹中删除除 src 和 pom 之外的所有文件(.setting/.classpath/target)。 3.再次导入为maven项目 4.再次构建,应该可以看到maven依赖了。


g
guyland123

这就是我解决它的方法

Window->Preferences: Maven->User Settings(在结果窗口中单击“打开文件”,或使用记事本等外部文本编辑器编辑 settings.xml)确保 localRepository(显示在此窗口中)正确。我的文件中有错字。

更正 settings.xml 后,单击同一 Preferences->Maven->User Settings 屏幕上的 Update Settings。

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


W
WesternGun

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

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

consrc 类型的每个 <classpathentry> 中。不要忘记将 <classpathentry .... /> 更改为 <classpathentry ...>xxx</classpathentry>

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


这为我做到了。谢谢。
s
slfan

Pom 中出现错误时出现此错误。

在控制台上运行 mvn eclipse:eclipse 命令以检查 pom 是否可解析。如果不可解析搜索错误。


我在cygwin下运行,我注意到只有这个项目没有在eclipse下构建,尽管我在命令行上成功构建(使用mvn)。运行 mvn eclipse:eclipse 后,所有依赖项都添加到了 eclipse 项目的类路径中,项目看起来很好。 ++
请记住,“M2Eclipse 不支持使用 maven-eclipse-plugin 创建的项目文件”。
K
KomodoDave

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

右键项目->构建路径->配置构建路径

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


W
Welsh

我的问题听起来很相似,所以我将添加到讨论中。我取消了将现有 maven 项目导入 Eclipse 的操作,这导致它不允许更新并且无法正确完成工作空间的构建。

我必须做的是选择 Run As... -> Maven build... 并在目标下输入 dependency:go-offline 并运行它。

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

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


N
Nandan Bhalwankar

我可以通过 1)右键单击(您的 maven 项目)-> maven -> maven install 来解决错误

安装成功后

2)右键单击(您的maven项目)-> maven->更新项目。 maven的整个错误都得到了解决!


F
Frizz1977

对我来说,在 .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


M
Mogsdad

我有一个类似的问题,并尝试了这篇文章中的所有答案。我最接近解决这个问题的方法是结合 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 项目。


J
James Monger

同样的问题也发生在我身上,这是因为由于 repo 问题而下载 jar 时出错,由 pom.xml 中的红旗指示。

我添加了另一个存储库,因此 pom.xml 中的红旗消失了,然后 Eclipse 再次加载了 pom,解决了它的问题并在 Project Explorer 中列出了 maven 依赖项。解决可见问题听起来简单明了,但是由于 Eclipse 非常乐意运行 maven 并成功构建,因此红旗和 repo 问题并不是其不愿意解析 pom 和列出 maven 的根源。依赖关系


E
Ebuzer Taha KANAT
mvn eclipse:clean

然后从 Eclipse:“Maven 更新项目”就可以了!


J
Jeryl Cook

每次都将 .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>

K
Krishna Rajagopalan

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


J
Jude Ukana

我最近在创建一个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>

D
Denil Nair

https://i.stack.imgur.com/suX2g.png


D
Danger

令人惊奇的是,这个问题有这么多不同的原因和可能的解决方案。我发现了另一种对我有用的解决方案。

好吧,与其说是解决方案,不如说是一个发现:我可以在 Package Explorer 中看到 Maven Dependencies 节点,这是 Java 透视图的默认设置,但在使用 Project Explorer 的 Java EE 透视图中却看不到它默认。这两个资源管理器乍一看非常相似,因此您可能希望在两者中看到 Maven 依赖项。

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


C
Community

整个项目在eclipse中看起来很奇怪,缺少maven依赖文件夹,它显示一些类型为未知,但我能够在maven中成功构建它。解决我的问题是将 gen 文件夹添加到项目构建路径上的源路径。

可能这类似于此 Android /FBReaderJ/gen already exists but is not a source folder. Convert to a source folder or rename it


x
xlm

在 Eclipse STS 中,如果“Maven 依赖项”消失,您必须检查并修复您的 pom.xml。我做了这个(两次)并解决了它。这不是依赖问题,而是在我的 pom.xml 中生成并随机移动的字符串。