到目前为止,我已经下载了
现在,我创建了一个类,其中包含两个字段,我想使用
以下是错误详情:
Apache Commons library
并提取了库中的 commons-lang3-3.8.1.jar
文件至 Java\jdk1.8.0_172\jre\lib\ext
文件夹中。现在,我创建了一个类,其中包含两个字段,我想使用
ob1.equals(ob2)
方法来比较两个对象。已经重写了方法 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
。
javac -cp commons-lang3-3.8.1/commons-lang3-3.8.1.jar:. key.java
然后使用以下命令运行它:java -cp commons-lang3-3.8.1/commons-lang3-3.8.1.jar:. main
。 输出为true。 - Ivan Kulezic