到目前为止,我已经下载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.
3 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils at io.appium.java_client.internal.ElementMap.getElementClass
答:添加硒罐“ commons-lang3-3.8.1 ”来解决这个问题
慕慕森
TA贡献1856条经验 获得超17个赞
您将 jar 放在正确的jre\lib\ext
相对路径中……但只有当java
您运行的命令来自您进行更改jre\bin
的同一jre
路径的目录时,它才会起作用。
如果您在扩展目录中复制了正确的 jar,但出现此异常,则很可能意味着在运行程序时,您没有使用进行更改的 JRE,而是使用另一个 JRE。来自env 变量
的java
命令PATH
很可能不是指您扩展的 JRE。您可以PATH
在 shell 中显示以进行检查。
因此,要么PATH
使用您扩展的 JRE 的 java 主路径设置 ,要么仅java
通过指定绝对路径(例如 /foo/jre/bin/java main
.
它应该(不是说必须)工作。
添加回答
举报
0/150
提交
取消