Maven包错误:org.apache.commons-lang不存在(Java)

Ron*_*del 20 java maven

我正在使用MyEclipse开发一个非常简单的Java Struts项目.一切都工作正常,直到我想StringUtilsorg.apache.commons.lang中使用该类.在MyEclipse我导入的包就像

import org.apache.commons.lang.StringUtils;
Run Code Online (Sandbox Code Playgroud)

我将commons-lang-2.4的Jar文件添加到我的构建路径中.这一切都很好,花花公子,我得到了Intellisense,没有Eclipse或任何错误.现在,当我去做一个时mvn clean package,我得到一个错误说

包org.apache.commons.lang不存在

我检查了我的war/Pom.xml文件,并确实将其声明为依赖项

<dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.0.1</version>
    </dependency>

    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.4</version>
    </dependency>

</dependencies>
Run Code Online (Sandbox Code Playgroud)

根据我的研究,我认为Maven应该下载软件包并将其安装到我的本地存储库(如果它不存在).我检查了存储库,jar文件就在那里.我认为jar文件必须已损坏所以我删除了commons-lang文件夹以获得commons-lang的新下载.现在这是我的想法,在我从本地存储库中删除它并运行后mvn clean package,它出去并下载commons-lang-2.1 .pom和jar(即使pom.xml有2.4)仍然给出了编译失败,说包org.apache.commons.lang不存在.

我没有使用Maven很长时间,所以我不确定如何解决这个问题.我错过了什么吗?我是否需要在其他地方的另一个pom.xml文件中添加依赖项?

Tom*_*icz 27

尝试运行以下命令并检查输出:

$ mvn dependency:tree
$ mvn help:effective-pom
Run Code Online (Sandbox Code Playgroud)

寻找commons-lang,也许某些东西会引起你的注意,如排除或依赖性覆盖.也是:

$ mvn dependency:copy-dependencies
Run Code Online (Sandbox Code Playgroud)

commons-langJAR 复制到你的target

  • 谢谢,帮助了一堆!我将commons-lang 2.4的引用添加到我的jar pom.xml中,现在它可以工作了.在执行clean包之前我关闭并重新打开命令提示符,然后下载了正确版本的jar并成功构建.应该在几小时前发布这个问题.谢谢 (6认同)

小智 14

在依赖项标记中向 pom.xml 添加以下依赖项对我有帮助:

    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.1</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)


Jan*_*net 5

我在没有 settings.xml 的情况下做了“mvn clean install -U”,所以它出错了。然后我添加了settings.xml,做了“mvn clean install -U”,它说“错误:org.apache.commons-lang不存在”。我知道代码是在另一台机器上成功构建的。所以这不是我的代码。大约 2 或 3 小时后,我终于意识到这是 .m2\repository 在我第一次运行时被破坏了。所以只需删除“repository”文件夹并运行“mvn clean install -U”并成功。