Подтвердить что ты не робот

NoClassDefFoundError: org/apache/commons/lang3/StringUtils

Я пытаюсь запустить пример проекта pcsc, который использовал эту библиотеку.

При запуске я получаю следующую ошибку

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

Я добавил commons-lang-2.6.jar и commons-lang3-3.1-sources.jar в libs и в пути к классам. Тем не менее я получаю эту ошибку

Код

public static void main(final String[] args) throws CardException, CommunicationException {


    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);
    }

}

Я ссылался на следующие ссылки:

java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils из BaseClassLoader

Struts 2 Framework демо

http://apache-commons.680414.n4.nabble.com/lang-java-lang-NoClassDefFoundError-org-apache-commons-lang-StringUtils-Exception-td3735881.html

Пожалуйста помоги !

4b9b3361

Ответ 1

Я добавил 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.

Ответ 2

Если вы используете Maven, поместите это внутри yout pom.xml:

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

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

Не забудьте обновить проект


Информация о зависимостях Apache Commons Lang ™ - Последняя версия 3.8 (Опубликовано: 20 августа 2018 г.)

Apache Maven

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

Gradle/Grails

compile 'org.apache.commons:commons-lang3:3.8'

Apache Buildr

'org.apache.commons:commons-lang3:jar:3.8'

Apache Ivy

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

Groovy Виноград

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

Scala SBT

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

Leiningen

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

Ссылка:

https://commons.apache.org/proper/commons-lang/dependency-info.html

Ответ 3

Йо, добавив приведенное ниже, и обновил Maven-объект, работал как шарм.

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

Ответ 4

Когда все остальное правильно, файл 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)

Ответ 5

У меня была эта проблема в версии IJ 2016 после обновления до 2018.3.4 и нажатия "Создать источники и обновить папки для всех проектов" на вкладке параметров Maven, проблема исчезла

IJ Maven tab at IJ 2018.3.4

Ответ 6

Добавление ниже работало для меня

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

Ответ 7

commons-lang3 помог мне избавиться от этой проблемы, спасибо