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的主要内容,如果未能解决你的问题,请参考以下文章
自定义声纳规则 - ClassNotFoundException: com.sonar.sslr.api.AstAndTokenVisitor
将 Kotlin 运行时库添加到 android 中的 aar
致命异常:java.lang.NoClassDefFoundError 解析失败:某些设备中的 Ljava/time/Month