NoClassDefFoundError: org/apache/commons/lang3/StringUtils 没有找到类定义错误:org/apache/commons/lang3/StringUtils

35

我在尝试运行这个库的样例项目时,遇到了以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: 

    org/apache/commons/lang3/StringUtils

    at com.github.devnied.emvnfccard.enums.EmvCardScheme.<init>(EmvCardScheme.java:97)
    at com.github.devnied.emvnfccard.enums.EmvCardScheme.<clinit>(EmvCardScheme.java:32)
    at com.github.devnied.emvnfccard.parser.EmvParser.readWithAID(EmvParser.java:277)
    at com.github.devnied.emvnfccard.parser.EmvParser.readEmvCard(EmvParser.java:120)
    at com.github.devnied.emvpcsccard.Main.main(Main.java:64)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 5 more

我已将< strong > commons-lang-2.6.jar 和< strong > commons-lang3-3.1-sources.jar 添加到 libs 和 classpath 中

主类:

public static void main(final String[] args) throws CardException {
    Main pcsc = new Main();
    CardTerminal ct = pcsc.selectCardTerminal();
    Card c = null;
    if (ct != null) {
        c = pcsc.establishConnection(ct);
        CardChannel channel = c.getBasicChannel();
        PcscProvider provider = new PcscProvider(channel);
        EmvParser parser = new EmvParser(provider, false);
        parser.readEmvCard();
        c.disconnect(false);
    }
}

我查阅了以下链接:


你是如何运行它的? - Jon Skeet
我在使用Selenium时遇到了这个错误,我注意到我手动添加了一些文件,而另一些是通过Maven添加的,这可能导致了这个错误。所以很可能是Selenium和htmlDriver(在我的情况下)之间的兼容性问题。 - bieboebap
6个回答

39
我已添加了commons-lang-2.6.jar和commons-lang3-3.1-sources.jar... 问题在于:commons-lang-2.6.jar不包含org.apache.commons.lang3包,因为它是版本3的一部分,而commons-lang3-3.1-sources.jar包含源代码,而不是字节码。您需要包括commons-lang3-3.1.jar。

这是哪个依赖项? - Gobliins
@Gobliins Apache Commons-Lang 的主页提供了直接下载或将其作为 Maven 依赖项包含的说明。 - azurefrog
啊,是的,我找到了。我忘记删除注释了,抱歉。 - Gobliins
我在pom中有commons-lang3的<version>3.3.2</version>版本,但这并没有解决问题。我仍然遇到java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils错误。以下是出现此错误的代码 if (StringUtils.equals(blah.getHaha().getLaugh(), "hehe")). - MBK
@MBK 在这里评论区不是一个很好的地方来提问。如果这个答案没有帮助到你,可能是因为你的问题与 OP 不同。尝试发布你自己的问题,包括你的代码和 pom.xml。 - azurefrog
谢谢,@azurefrog。提供的解决方案对我很有帮助。干杯!! - Vikash Choudhary

16
如果您使用的是Maven,请将以下内容放入您的pom.xml文件中:

Commons Lang的Maven中央仓库:

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

Apache Commons Lang的Maven中央仓库:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12</version>
</dependency>

不要忘记:更新Maven项目。

Apache Commons Lang™ 依赖信息

最后发布日期:2021年3月2日 | 版本:3.12

Apache Maven

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.12</version>
</dependency>

Apache Buildr
'org.apache.commons:commons-lang3:jar:3.12'

Apache Ivy

<dependency org="org.apache.commons" name="commons-lang3" rev="3.12">
  <artifact name="commons-lang3" type="jar" />
</dependency>

灵活的葡萄

@Grapes(
@Grab(group='org.apache.commons', module='commons-lang3', version='3.12')
)

Gradle/Grails
compile 'org.apache.commons:commons-lang3:3.12'

Scala SBT

libraryDependencies += "org.apache.commons" % "commons-lang3" % "3.12"

Leiningen

[org.apache.commons/commons-lang3 "3.12"]

参考资料:


1
或者 Gradle -- compile 'org.apache.commons:commons-lang3:3.1' - PGMacDesign
1
我已添加了以下依赖项,我的问题得到了解决。 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.1</version> </dependency>谢谢 - Rajeev Rathor

2

你只需要添加以下内容并更新Maven项目即可:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.1</version>
</dependency>

1
以下内容对我有用:

在下面添加的内容对我有用:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>

0

我在将IJ版本从2016更新到2018.3.4后遇到了这个问题,但在Maven选项卡中点击“为所有项目生成源代码并更新文件夹”后,问题消失了。

IJ Maven tab at IJ 2018.3.4


0
当其他所有东西都正确时,很少会出现JAR文件损坏的情况。确保在编译过程中不会看到下面类似的错误信息。
[ERROR] error reading 
C:\Users\Mohan\.m2\repository\org\apache\commons\commons-lang3\3.7\commons-lang3-3.7.jar; 
ZipFile invalid LOC header (bad signature)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接