これまでのところ私はダウンロードしてApache Commons library
、ライブラリを抽出
commons-lang3-3.8.1.jar
してJava\jdk1.8.0_172\jre\lib\ext
。
今私は2つのフィールドを持つクラスを作成していると私はob1.equals(OB2)を使用して、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
。
この問題に時間を過ごした後、私は最終的に設定することで、それを固定CLASSPATH
変数を。私が使用してみました-cp
コマンドを残念ながらそれは私のために仕事をしませんでした。私たちは、明示的にこれを行う場合、あなたは彼らが既に更新クラスパスを知っているので、JavaコンパイラおよびJavaインタプリタに「-cp」または「-classpath」スイッチの値を入力する必要はありません。
私のWindowsマシン上で、私が設定しているCLASSPATH
次の経由変数を:
set CLASSPATH=/coding @October\lib\commons-lang3-3.8.1.jar;.
現在、私はにいるcoding @October
ディレクトリ。commons-lang3-3.8.1.jar
ファイルは次の場所にあります。 coding @October\lib
directory.Theのmyapp.java
ファイルが置かれているcoding @October
ディレクトリ。
クラスパスを設定した後、私はその後、コンパイルして実行することができますmyapp.java
経由でjavac myapp.java
直接、その後、コマンドjava myapp
スクリプトを実行します。