Maven - ClassNotFoundException:org.apache.commons.lang.StringUtils

Posted

技术标签:

【中文标题】Maven - ClassNotFoundException:org.apache.commons.lang.StringUtils【英文标题】:Maven - ClassNotFoundException: org.apache.commons.lang.StringUtils 【发布时间】:2018-01-17 06:15:56 【问题描述】:

谁能解释一下这个错误是什么以及什么时候发生的?

Downloading: file://C:/.../org/springframework/boot/spring-boot-dependencies/1.4.0.RELEASE/spring-boot-dependencies-1.4.0.RELEASE.pom
Exception in thread "pool-11-thread-1" ---------------------------------------------------
constituent[0]: file:/C:/Program%20Files/NetBeans%208.2/java/maven/lib/aether-api-1.13.1.jar
constituent[1]: file:/C:/Program%20Files/NetBeans%208.2/java/maven
constituent[18]: file:/C:/Program%20Files/NetBeans%208.2/java/maven/lib/plexus-component-annotations-1.5.5.jar
constituent[19]: file:/C:/Program%20Files/NetBeans%208.2/java/maven/lib/plexus-interpolation-1.14.jarjava.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
    at org.apache.maven.wagon.providers.file.FileWagon.resolveDestinationPath(FileWagon.java:206)
    at org.apache.maven.wagon.providers.file.FileWagon.resourceExists(FileWagon.java:265)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:577)
    at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:60)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
    ... 7 more

为什么maven找不到org.apache.commons.lang.StringUtils。查看本地存储库,我可以找到 org\apache\maven\wagon\wagon-providers\2.7\...org\apache\commons\parent\...org\apache\commons\lang\...org\apache\commons\exec\...org\apache\commons\compress\...org\apache\commons\pool2\...。我无法弄清楚这个问题是什么时候发生的,所以我无法解决这个问题......

【问题讨论】:

你的类路径坏了尝试重建项目和maven更新 您是否尝试过清理本地存储库? 删除.m2,重启电脑->同样的问题 你的 POM 文件是什么? 您的 M2_HOME 是否指向与 Maven 可执行文件相同的位置? 【参考方案1】:

已修复!我已经在https://maven.apache.org/download.cgi 下手动下载了maven 3.5,并将文件commons-lang3-3.5.jar 复制到C:\Program Files\NetBeans 8.2\java\maven\lib\。我正在使用带有 Maven 作为插件的 NetBeans 8.2。

【讨论】:

请记住,commons-lang 是您的应用程序的依赖项,而不是嵌入在 NetBeans 中的 maven。它会起作用,但是当您需要构建某些东西时,您是否总是将所有依赖项都放到NetBeans\maven\lib?它很快就会变得不守规矩。修复项目的 maven 设置和/或 pom 文件应该是您的解决方案。 你为什么认为,我需要将我的应用程序中的所有部门都删除到NetBeans\maven\lib。这是不正确的。这里是 maven 放置的所有 deps。所以不需要添加使用过的deps来构建项目。 这甚至是我的看法。我什么也不做。但由于某种原因,maven 内部使用的是 common-lang。将它包含到应用程序 pom 中并不能解决我的问题。编辑:commons-lang 在内部使用,在我的情况下它不是我的应用程序的一个部门。 不确定@diginoise 讨厌什么。我刚刚使用 Netbeans 8.2 和它附带的捆绑 maven 遇到了这个异常。将 commons-lang2.6.jar 复制到 C:\Program Files\NetBeans 8.2\java\maven\lib\ 为我修复了它。 @diginoise 我不依赖 commons-lang2.6。查看堆栈跟踪 - 异常来自 maven 进程本身。【参考方案2】:

尝试在您的 pom.xml 中添加此依赖项:

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

【讨论】:

以上是关于Maven - ClassNotFoundException:org.apache.commons.lang.StringUtils的主要内容,如果未能解决你的问题,请参考以下文章

java_父类

自定义声纳规则 - ClassNotFoundException: com.sonar.sslr.api.AstAndTokenVisitor

将 Kotlin 运行时库添加到 android 中的 aar

致命异常:java.lang.NoClassDefFoundError 解析失败:某些设备中的 Ljava/time/Month

Java-Maven:Maven相关的概念:Maven坐标Maven仓库Maven声明周期

Maven