Пока что я скачал Apache Commons library
, извлек библиотеку
commons-lang3-3.8.1.jar
в Java\jdk1.8.0_172\jre\lib\ext
.
Теперь я создал класс с двумя полями и хочу сравнить два объекта, используя ob1.equals (оЬ2).Методы equals
и hashCode
были переопределены, и я получаю ошибку Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/builder/EqualsBuilder
при время выполнения .
import java.util.*;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
class key{
int end;
LinkedList<Integer> via = new LinkedList<>();
key(int x,LinkedList<Integer> ob){
this.end = x;
this.via = ob;
}
@Override
public int hashCode(){
return new HashCodeBuilder().append(end).append(via).toHashCode();
}
@Override
public boolean equals(Object obj)
{
if(!(obj instanceof key))
return false;
if(this==obj)
return true;
key o=(key)obj;
return new EqualsBuilder().append(end,o.end).append(via,o.via).isEquals();
}
}
class main{
public static void main(String[] args)
{
key ob1 = new key(12,new LinkedList<Integer>(Arrays.asList(1,2,3)));
key ob2 = new key(12,new LinkedList<Integer>(Arrays.asList(1,2,3)));
System.out.println(ob1.equals(ob2)); //expecting true
}
}
Подробности ошибки приведены ниже.
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/commons/lang3/builder/EqualsBuilder
at key.equals(test.java:29)
at main.main(test.java:43)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.builder.EqualsBuilder
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
Я уже давно сталкиваюсь с этой проблемой.Я проверил все файлы классов, и я вполне уверен, что библиотеки загружены правильно, но я не знаю, почему я получаю NoClassDefFoundError
в runtime
.