A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李道福 中级黑马   /  2013-3-29 10:25  /  1778 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李道福 于 2013-3-29 17:46 编辑
  1. interface Person{
  2.         void show();
  3.         void doing();
  4. }

  5. class Student implements Person{
  6.         public void show(){
  7.                 System.out.println("你好,我是学生");
  8.         }
  9.         public void doing(){
  10.                 System.out.println("我正在看书");
  11.         }
  12. }

  13. class Worker implements Person{
  14.         public void show(){
  15.                 System.out.println("你好,我是工人");
  16.         }
  17.         public void doing(){
  18.                 System.out.println("我正在工作");
  19.         }
  20. }
  21. class Teacher implements Person{
  22.         public void show(){
  23.                 System.out.println("你好,我是老师");
  24.         }
  25.         public void doing(){
  26.                 System.out.println("我正在上课");
  27.         }
  28. }
  29. class impFactory{
  30.         public static Person factorys() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
  31.                 Person p=(Person)Class.forName("Student").newInstance();
  32.                 return p;
  33.         }
  34. }
  35. public class Factory {

  36.         /**
  37.          * @param args
  38.          * @throws ClassNotFoundException
  39.          * @throws IllegalAccessException
  40.          * @throws InstantiationException
  41.          */
  42.         public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
  43.                 Person p=impFactory.factorys();
  44.                 p.show();
  45.                 p.doing();
  46.         }
  47. }
  48. 为什么这些代码在DOS命令行中能通过编译正常运行,而在MyEclipse中却不能通过编译,报出ClassNotFoundException异常?
复制代码

点评

如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢  发表于 2013-3-29 12:51

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

正序浏览
ClassNotFoundException
常见的原因
1 所需要的支持类库放错了地方,并没有放在类路径(CLASSPATH环境变量)里面。
2 使用了重复的类库,且版本不一致。导致低版本的被优先使用。
3 类名错了,一般是使用Class.forName的时候,手工指定了类名的情况。
4 没有导入纯JAVA驱动包。

解决方案

1 确认你的类库在系统的CLASSPATH下面,如果是Tomcat,则可以放在tomcat/lib/目录下面。
2 删除重复的类库,只保留最新的。
3 尽可能不使用这种编译器无法为你检查的方式。
希望对你有帮助...

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
在命令行中,编译生成的class文件路径和.java文件在一个目录,也就是当前目录。
在MyEclipse下生成的class文件路径在Properties ->java build path-> Source ->default output folder
看下你系统环境变量有没有配置classpath咯。。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
第33行,看看你的包名写对了没有

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马