有参无参的都报错了。

来源: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回答

好帮手慕小脸

2020-06-15

同学你好,测试同学的代码是可以正确运行的。如下所示:

http://img.mukewang.com/climg/5ee748a8092a1d5306680209.jpg

根据报错信息来看

http://img.mukewang.com/climg/5ee748e7090f530c05890160.jpg

缺少hamcrest的jar包,建议同学去教辅下载如下jar包添加到项目中再试试。

https://class.imooc.com/course/721

http://img.mukewang.com/climg/5ee7493b090b82c603650069.jpg

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


1

0 学习 · 8016 问题

查看课程