引起:java.lang.ClassNotFoundException:

到目前为止,我已经下载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在runtime.


qq_笑_17
浏览 351回答 3
3回答

小唯快跑啊

Exception&nbsp;in&nbsp;thread&nbsp;"main"&nbsp;java.lang.NoClassDefFoundError:&nbsp;org/apache/commons/lang3/StringUtils &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;io.appium.java_client.internal.ElementMap.getElementClass答:添加硒罐“&nbsp;commons-lang3-3.8.1&nbsp;”来解决这个问题

慕慕森

您将 jar 放在正确的jre\lib\ext相对路径中……但只有当java您运行的命令来自您进行更改jre\bin的同一jre路径的目录时,它才会起作用。如果您在扩展目录中复制了正确的 jar,但出现此异常,则很可能意味着在运行程序时,您没有使用进行更改的 JRE,而是使用另一个 JRE。来自env 变量的java命令PATH很可能不是指您扩展的 JRE。您可以PATH在 shell 中显示以进行检查。因此,要么PATH使用您扩展的 JRE 的 java 主路径设置 ,要么仅java通过指定绝对路径(例如&nbsp;/foo/jre/bin/java main.它应该(不是说必须)工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java