有参无参的都报错了。
来源:3-4 自由编程
qq_慕无忌2409003
2020-06-15 17:05:41
package com.imooc.reflect.test;
import org.junit.Test;
import java.lang.reflect.Constructor;
public class ConstructorTest {
@Test
/**\
* 获得无参构造方法,并得到Goods类的对象,然后调用display()方法
*/
public void demo1() throws Exception {
Class class1 = Class.forName("com.imooc.reflect.test.Goods");
Constructor c = class1.getConstructor();
Goods g = (Goods) c.newInstance();
g.display();
}
@Test
/**\
* 获得有参构造方法,并得到Goods类的对象,然后输出该对象
*/
public void demo2() throws Exception{
Class class1 = Class.forName("com.imooc.reflect.test.Goods");
Constructor c = class1.getConstructor(int.class,String.class,float.class,String.class);
Goods g = (Goods) c.newInstance(1,"笔记本电脑",4000,"锐龙5");
System.out.println(g);
}
}
package com.imooc.reflect.test;
public class Goods {
private int id;
private String name;
private float price;
private String desc;
public Goods() {
super();
}
public Goods(int id, String name, float price, String desc) {
super();
this.id = id;
this.name = name;
this.price = price;
this.desc = desc;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return "Goods [id=" + id + ", name=" + name + ", price=" + price + ", desc=" + desc + "]";
}
public void display() {
System.out.println("商品信息");
}
}
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:31)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 22 more
1回答
同学你好,测试同学的代码是可以正确运行的。如下所示:

根据报错信息来看

缺少hamcrest的jar包,建议同学去教辅下载如下jar包添加到项目中再试试。
https://class.imooc.com/course/721

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题